熊猫和积

新手上路,请多包涵

我有一个 df:

 Value1  Value2  1   2   3
  1       A     0   1   2
  2       B     3   4   5
  3       C     2   2   2

我想在行和列 1 2 3 之间执行 sumproduct:

 Value1  Value2  1   2   3   sumproduct
  1       A     0   1   2   8    = 0*1 + 1*2 + 2*3
  2       B     3   4   5   26   = 3*1 + 4*2 + 5*3
  3       C     2   2   2   12   = 2*1 + 2*2 + 2*3

我试过 (df.values*df.columns.values).sum(1) 但我需要先删除 Value1Value2 列。有更好的方法吗?

非常感谢!

原文由 TylerNG 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 401
2 个回答
df = pd.DataFrame({'1': [0, 3, 2], '2': [1, 4, 2], '3': [2, 5, 2]})
df['sumproduct'] = df[1] * 1 + df[2] * 2 + df[3] * 3

更新一般案例

valid_columns = [col for col in df.columns if col.isdigit()]
df['sumproduct'] = (df[valid_columns] * [int(x) for x in valid_columns]).sum(axis=1)

原文由 biniow 发布,翻译遵循 CC BY-SA 3.0 许可协议

我将要做的

df.iloc[:,2:].dot([1,2,3])
Out[239]:
0     8
1    26
2    12
dtype: int64

让它自动

s=df.iloc[:,2:]

s.dot(s.columns.astype(int))
Out[242]:
0     8
1    26
2    12
dtype: int64

原文由 BENY 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏