熊猫总和

Tyl*_*rNG 2 python product sum pandas

我有一个df:

Value1  Value2  1   2   3
  1       A     0   1   2
  2       B     3   4   5
  3       C     2   2   2
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

我试过(df.values*df.columns.values).sum(1),但后来我需要删除Value1Value2第一列。有没有更好的方法?

非常感谢!

bin*_*iow 5

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
Run Code Online (Sandbox Code Playgroud)

一般情况更新

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)
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 5

我将要做的

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

使其自动

s=df.iloc[:,2:]

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