2 回答
TA贡献1798条经验 获得超3个赞
这是一个好问题,您可能需要先使用cumcount创建帮助merge密钥,这将确保费用项目一旦使用,就不会再次使用。
base['helpkey']=base.groupby('AccountNumber').cumcount()
fee['helpkey']=fee.groupby('AccountNumber').cumcount()
yourdf=base.merge(fee,on=['AccountNumber','helpkey'],how='left').drop('helpkey',1)
yourdf
Name AccountNumber $Amount LicenseeFee
0 Brett 1234 a x
1 Brett 1234 b NaN
2 Jill 2458 c NaN
3 Peter 1485 d y
TA贡献1785条经验 获得超8个赞
您可以先合并,然后在处理 NaN 之后:
In [11]: res = df.merge(df1, how='outer')
In [12]: res
Out[12]:
Name Account Number $Amount Licensee Fee
0 Brett 1234 a x
1 Brett 1234 b x
2 Jill 2458 c NaN
3 Peter 1485 d y
In [13]: res.loc[res.groupby("Account Number").cumcount() > 0, "Licensee Fee"] = np.nan
In [14]: res
Out[14]:
Name Account Number $Amount Licensee Fee
0 Brett 1234 a x
1 Brett 1234 b NaN
2 Jill 2458 c NaN
3 Peter 1485 d y
添加回答
举报