Python 比较pandas和merge中的列
所以我有两个数据帧,我想合并到一个名为offer_code的列中。所有行在一个列表中都有多个提供代码(我可能会将其转换为元组),我希望将提供代码与第二个数据帧匹配,并在它们上合并。其中一个数据帧返回一个列表,另一个只是一个值,但我想合并它,以便它合并。数据框来自网站的销售数据Python 比较pandas和merge中的列,python,python-3.x,pandas,merge,Python,Python 3.x,Pandas,Merge,所以我有两个数据帧,我想合并到一个名为offer_code的列中。所有行在一个列表中都有多个提供代码(我可能会将其转换为元组),我希望将提供代码与第二个数据帧匹配,并在它们上合并。其中一个数据帧返回一个列表,另一个只是一个值,但我想合并它,以便它合并。数据框来自网站的销售数据 df = pd.DataFrame(data={'available': [False, True, True], 'count': [190,285,165],
df = pd.DataFrame(data={'available': [False, True, True],
'count': [190,285,165],
'offer_codes': ['no_offer_code',['G545', 'G1891'],['G92182', 'G1921']]})
df2 = pd.DataFrame(data={'price':[85.00,99.00],
'offer_codes':['G1891', 'G1921'],
'after_fees':[105, 121]})
我想合并这些,但我的问题是,当我试图合并元组时,列表是不可破坏的,似乎没有正确匹配
#first df
available count offer_codes
0 False 190 no_offer_code
1 True 285 [G545, G1891]
2 True 165 [G92182, G1921]
#2nd df
after_fees offer_codes price
0 105 G1891 85.0
1 121 G1921 99.0
#after the merge
after_fees available count offer_codes price
0 105 True 285 G1891 85.0
1 121 True 165 G1921 99.0
我原以为把列表放入元组会有效果,但事实并非如此 有点长
df.set_index(['available','count']).offer_codes.apply(pd.Series).stack().\
to_frame('offer_codes').\
reset_index(level['count','available']).\
merge(df2,on='offer_codes',how='left').dropna()
Out[59]:
available count offer_codes after_fees price
2 True 285 G1891 105.0 85.0
4 True 165 G1921 121.0 99.0
最后一点,你可以省略how='left',这样你就不必
dropna()
,对吗?