我有以下2个表df和name_df,其中人数不限于2,并且可以增加。在名称列(例如John和Mary)下,1表示他/她消费了该商品,而0表示未消费:
df
item price John Mary
apple 2 1 1
mango 5 0 1
name_df
name
John
Mary
我想计算每个人的总积,并将该列加入name_df列。我希望结果看起来像这样:
name_df
name sumproduct
John 2
Mary 7
我的主要问题是找出如何使用python / pandas计算sumproduct的方法。我知道.dot()
函数会得到我想要的结果,但是如何将这些结果附加到每个人身上呢?
答案 0 :(得分:4)
您可以使用name_df
来确定id_vars
和groupby
。
u = df.melt(df.columns ^ name_df['name'])
u.price.mul(u.value).groupby(u.variable).sum()
variable
John 2
Mary 7
dtype: int64