如何在Padas数据框中乘以一组列

时间:2019-04-16 17:23:36

标签: pandas

我有一个熊猫数据框和一个列表,如下所示。

cols = ['n1', 'n2']

item n1 n2 n3
item1 1 2  5
item2 2 3  3
item3 1  1  1

我想乘以cols中的选定列并将其添加为数据帧中的单独列。即

item n1 n2 n3 multiplication
item1 1 2  5        2
item2 2 3  3        6
item3 1  1  1       1

我尝试使用multiply函数来执行此操作,如下所示。 df[n1].multiply(df[n2])

但是,当只有2个columns时,这很容易。假设我在cols列表中有很多列(例如cols = ['n1', 'n2', 'n3', 'n4', 'n5'])。如何在熊猫中有效地进行这种繁殖?也许只用一行代码。

很高兴在需要时提供更多详细信息。

2 个答案:

答案 0 :(得分:3)

使用产品

cols = ['n1','n2', 'n3']
df['multiplication'] = df[cols].prod(axis=1)

产品为提供的轴提供product的值。

在这种情况下,cumprod不是正确的选择,因为它提供了cumulative product,然后将last column用作计算结果

答案 1 :(得分:2)

您可以在要相乘的列上使用cumprod方法,然后采用要相乘的最后一列

colsToMultiply = ['n1','n2', 'n3']
df['multiplication'] = df[colsToMultiply].cumprod(axis=1)[colsToMultiply[-1]]

在执行上述操作之前,您可能还想用1填充NaN

df[colsToMultiply] = df[colsToMultiply].fillna(1)