【发布时间】:2014-06-09 14:43:22
【问题描述】:
在合并 pandas DataFrames 时,有没有办法在列之间执行计算?例如,假设我有以下两个 DF,并且我想将相应 id 的数据相乘:
df1 = DataFrame({'id':['a','b','c'], 'data':[8,7,12]})
df2 = DataFrame({'id':['b','a','c'], 'data':[3,2,1]})
期望的输出是:
id data
0 a 16
1 b 21
2 c 12
我知道可以通过合并和相乘来做到这一点:
merged = pd.merge(df1, df2, how='left', on=['id'])
merged['data'] = merged.data_x * merged.data_y
merged[['id', 'data']]
但是,对于大量列,这非常麻烦,尤其是因为合并的列名具有_x 和_y 后缀。我想要的基本上是以下 SQL 的 pandas 等效项:
SELECT a.id, a.data * b.data AS 'data'
FROM table a
LEFT JOIN table b
ON a.id = b.id
【问题讨论】: