我有
df={'x1':[1,2,3,4],
'x2':[5,6,7,8],
'y1':[1,2,1,1],
'y2':[1,1,1,1],
}
df=pd.DataFrame(df)
看起来像
x1 x2 y1 y2
1 5 1 1
2 6 2 1
3 7 1 1
4 8 1 1
如何在df x1 * y1 + x2 * y2中获取新列作为"内部产品" ? 第一次尝试是
df['inner']=(df[['x1','x2']*df[['y1','y2']]).sum(axis=1)
但失败了
应该很容易但不知何故找不到任何简单的答案
答案 0 :(得分:3)
您可以使用@EdChum解决方案作为示例。更一般:
X = df.loc[:, df.columns.str.contains('x')]
Y = df.loc[:, df.columns.str.contains('y')]
df['inner'] = (X.values * Y.values).sum(axis=1)
In [24]: df
Out[24]:
x1 x2 y1 y2 inner
0 1 5 1 1 6
1 2 6 2 1 10
2 3 7 1 1 10
3 4 8 1 1 12
答案 1 :(得分:1)
不应该是这样的:
In [5]:
df['inner']=(df['x1'] * df['y1']) + (df['x2']*df['y2'])
df
Out[5]:
x1 x2 y1 y2 inner
0 1 5 1 1 6
1 2 6 2 1 10
2 3 7 1 1 10
3 4 8 1 1 12