15

Consider the following DataFrame.

n  v1 v2 v3 v4 v5
0   1  2  3  4  5
1   1  2  3  4  5
2   1  2  3  4  5

For each row, I want to add the values of v2, v3, v4 to a list and multiply the values in the list with v5 and put the result into a new column v6 such that I end up with a DataFrame like this:

n  v1  v6
0   1  [10, 15, 20]
1   1  [10, 15, 20]
2   1  [10, 15, 20]

How can I achieve this in Pandas?

Alex Riley
  • 169,130
  • 45
  • 262
  • 238
kasperhj
  • 10,052
  • 21
  • 63
  • 106

1 Answers1

27

You can do it in one line like this:

>>> df['v6'] = df[['v2', 'v3', 'v4']].mul(df['v5'], axis=0).values.tolist()
>>> df
   v1  v2  v3  v4  v5            v6
0   1   2   3   4   5  [10, 15, 20]
1   1   2   3   4   5  [10, 15, 20]
2   1   2   3   4   5  [10, 15, 20]

This does the relevant multiplication of columns, puts the v2, v3 and v4 values out to a list of lists (row by row) and creates the new column v6.

Alex Riley
  • 169,130
  • 45
  • 262
  • 238