大熊猫内行的产物

时间:2016-03-14 10:10:58

标签: python pandas

我有

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)

但失败了

应该很容易但不知何故找不到任何简单的答案

2 个答案:

答案 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