E.K*_*.K. 11 python merge pandas
如何在两个具有不同名称的列上合并两个pandas DataFrame并保留其中一列?
df1 = pd.DataFrame({'UserName': [1,2,3], 'Col1':['a','b','c']})
df2 = pd.DataFrame({'UserID': [1,2,3], 'Col2':['d','e','f']})
pd.merge(df1, df2, left_on='UserName', right_on='UserID')
Run Code Online (Sandbox Code Playgroud)
这提供了这样的DataFrame
但显然我正在合并UserName,UserID所以他们是一样的.我希望它看起来像这样.有没有干净的方法来做到这一点?
只有我能想到的方法是在合并之前将列重新命名为相同,或者在合并之后删除其中一列.如果熊猫自动掉落其中一个或者我可以做类似的话,我会很高兴
pd.merge(df1, df2, left_on='UserName', right_on='UserID', keep_column='left')
Run Code Online (Sandbox Code Playgroud)
Psi*_*dom 13
如何设置UserIDas索引然后连接第二个数据框的索引?
pd.merge(df1, df2.set_index('UserID'), left_on='UserName', right_index=True)
# Col1 UserName Col2
# 0 a 1 d
# 1 b 2 e
# 2 c 3 f
Run Code Online (Sandbox Code Playgroud)
里面没有什么好用的:它是要保留列,因为较大的情况(如左右或外部联接)会带来两列的附加信息。请勿过度设计您的合并线,如您建议的那样明确
解决方案1:
df2.columns = ['Col2', 'UserName']
pd.merge(df1, df2,on='UserName')
Out[67]:
Col1 UserName Col2
0 a 1 d
1 b 2 e
2 c 3 f
Run Code Online (Sandbox Code Playgroud)
解决方案2:
pd.merge(df1, df2, left_on='UserName', right_on='UserID').drop('UserID', axis=1)
Out[71]:
Col1 UserName Col2
0 a 1 d
1 b 2 e
2 c 3 f
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6365 次 |
| 最近记录: |