我有以下数据框:
数据框1:
数据框2:
当数据框 2 的“Item”系列中不存在两列时,我想丢弃数据框 1 中的行,并且我想基于数据框 1 和 2 创建以下数据框3:
数据框 3 中的第三列是数据框 2 中商品价格的总和。
最佳答案
melt
、merge
和 unstack
的组合:
(df1[(df1['Fruit'].isin(df2['Item'])) & (df1['Vegetable'].isin(df2['Item']))]
.reset_index()
.melt(id_vars = 'index',value_vars = ['Fruit','Vegetable'])
.merge(df2,left_on='value',right_on = 'Item')
.drop(columns = 'Item')
.set_index(['index','variable']).unstack(level = 1)
.transform(lambda g: g.assign(Combination_Price=g.xs('Price/lb',axis=1,level=0).sum(axis=1)))
)
生成组合价格和按成分分割,以防万一
value Price/lb Combination_Price
variable Fruit Vegetable Fruit Vegetable
index
0 Mango Spinach 2 1 3
3 Peach Zucchini 2 1 3
关于python - 如何根据单独数据帧中列值的存在来过滤数据帧的行并附加第二个数据帧中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66911494/