我有一个熊猫数据框和一个列表,如下所示。
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']
)。如何在熊猫中有效地进行这种繁殖?也许只用一行代码。
很高兴在需要时提供更多详细信息。
答案 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)