Pandas 根据另一列中的值对相应值求和

Pandas sum corresponding values based on values in another column

我有一个 table, df1,包含列 Itemlist1 和 Itemlist2,其中此 table 中的每个单元格可以包含从 1 开始的任意数量的项目。示例:可以有 1 个项目 A一个单元格,另一个单元格中有 2 个项目 B、C,另一个单元格中有 3 个项目 A、D、E。

我还有另一个 table,df2,其中包含每件商品的价格和成本。

我想创建这个最终的 df,其中添加了 2 个新列到 df1,Totalprice 和 Totalcost。 Totalprice 和 Totalcost 是 df1 每一行中所有项目的总和。示例:在第 2 行中,Totalprice 是商品 B、A、D 的价格之和,Totalcost 是商品 B、A、D 的成本之和。

我正在考虑将所有项目合并到df1中的一列,将每个项目拆分成一列,然后将其与df2合并。这是我目前所拥有的。

df1["items"]=df1[["Itemlist1","Itemlist2"]].agg(', '.join,axis=1)

df3=df1['items'].str.split(', ',expand=True)

由于每行的项目数不固定,列名也不匹配,我该如何循环将其与 df2 合并?

或者,是否有更好的方法来达到我想要的最终 df?请有任何建议。谢谢。

从您的 df3,执行 replace,然后 sumaxis=1

cost_dict = dict(zip(df2.Itemcode,df2.Cost))
price_dict = dict(zip(df2.Itemcode,df2.Price))
df1['totalcost'] = df3.replace(cost_dict).sum(axis=1)
df1['totalprice'] = df3.replace(price_dict).sum(axis=1)