我有两个数据框,并希望将它们组合成一个数据框。我使用了一个通用键来合并两个框架。最终结果是一个数据帧,其中一些行具有几乎相同的字段,只有少数列具有不同的值。考虑添加适当的列,我想将这些几乎相同的行合并为单个行。 这是数据帧:
商店:
Banner - Region - Store ID
Walmart - NC - 66999
TJ - NY - 4698
价格:
Price - Store ID - UPC
3.6 - 66999 - 234565
4.5 - 4698 - 334526
我已经合并了两个帧,并播放了一点以收敛到所需的帧。
store_cross = pd.crosstab(stores['Store ID'],stores['Region'],margins=True)
merged_df2 = pd.merge(store_cross,prices,left_on='Store ID', right_on='Store ID')
merged_df2 = pd.merge(merged_df2,stores,left_on='Store ID', right_on='Store ID')
这是到目前为止的结果:
NY - NC - Price - UPC - Banner
1 - 0 - 3.6 - 234565 - Walmart
0 - 1 - 4.5 - 334526 - TJ
可以在不同的商店购买UPC。这意味着框架中还有其他行具有相同的UPC和横幅,但位置不同。
我想要拥有的是这样的:
Banner - UPC - NC - NY
Walmart - 234565 - 3.9 - 3.6
TJ - 334526 - 4.5 - 4.3
答案 0 :(得分:1)
我相信您首先需要merge
,然后需要DataFrame.pivot_table
:
df = pd.merge(stores, prices, on='Store ID')
store_cross = df.pivot_table(index=['Banner', 'Store ID','UPC'],
columns='Region',
values='Price',
aggfunc='sum').reset_index()
print (store_cross)
Region Banner Store ID UPC NC NY
0 TJ 4698 334526 NaN 4.5
1 Walmart 66999 234565 3.6 NaN