我有一个包含多个列的pandas数据框。我想从行中的值和另一个列向量数据帧中创建一个新列weighted_sum
weighted_sum
应具有以下值:
row[weighted_sum] = row[col0]*weight[0] + row[col1]*weight[1] + row[col2]*weight[2] + ...
我找到了函数sum(axis=1)
,但它不允许我与weight
相乘。
编辑: 我改变了一些事情。
weight
如下所示:
0
col1 0.5
col2 0.3
col3 0.2
df
如下所示:
col1 col2 col3
1.0 2.2 3.5
6.1 0.4 1.2
df*weight
返回一个包含Nan
值的数据帧。
假设权重是每列的一系列权重,则只需乘以并求和即可:
这种方法的好处是可以处理不想称重的柱:
问题是,您将帧与具有不同行索引的不同大小的帧相乘。以下是解决方案:
您可以访问列:
或者用
dot
来找回另一个DataFrame
要将所有这些结合起来:
下面是每个方法的
timeit
,使用较大的DataFrame
。对于广泛的
DataFrame
:因此,
dot
速度更快,可读性更强。注意:如果任何数据包含
NaN
s,则不应使用dot
应使用乘法和和方法。dot
无法处理NaN
s,因为它只是numpy.dot()
(它不处理NaN
)周围的一个薄包装。相关问题 更多 >
编程相关推荐