【发布时间】:2019-10-17 15:00:49
【问题描述】:
我有一个简单的练习,但在 Pandas 中找不到简单的解决方案。我的数据框具有以下形式:
A B C D A1 B1 C1 D1
0 0.0 0.0 0.0 0.090909 0.247747 0.162398 0.381459 0.208396
1 0.0 0.0 0.0 0.090909 0.250811 0.168629 0.374599 0.205961
2 0.0 0.0 0.0 0.090909 0.252173 0.168521 0.374551 0.204755
我想始终使用 AA1 + BB1 ..D*D1
计算列的和积我找到了一个解决方案,但它有点乱,不适合列数一增加。任何pythonic方法来解决这个问题?使用 Excel 我会给你sumproduct 函数。
目前的解决方案:
df['SP'] = df[["A", 'A1']].prod(axis=1) + df[["B", 'B1']].prod(axis=1) + df[["C", 'C1']].prod(axis=1) + df[["D", 'D1']].prod(axis=1)
应该导致:
df[SP]
0.018945
0.018724
0.018614
【问题讨论】:
-
df.groupby(df.columns.str[0], axis=1).prod().sum(1) -
这看起来很棒,但是是否可以使用列名更加动态并分配范围或列表?实际上,列名非常不同。
标签: python pandas sumproduct