[英]Merge with pandas creating new columns?
我有一个数据框,该数据框具有对另一个数据框的多个引用(就像它在SQL中是外键一样),因此,我想将它们合并,以便可以将第一个数据框中的所有信息都包含在其中。 类似于以下内容,请记住在python中使用熊猫。
df1: df2:
pk fk1 fk2 pk att1 att2
0: 0001 2 3 1 'aa' 'bb'
1: 0002 2 - 2 'ab' 'ba'
2: 0003 1 3 3 'ab' 'bb'
我假装要合并的是一个表:
df3:
pk fk1 fk2 att1_1 att1_2 att2_1 a2t2_2
0: 0001 2 3 'ab' 'ba' 'ab' 'bb'
1: 0002 2 - 'ab' 'ba' - -
2: 0003 1 3 'aa' 'bb' 'ab' 'bb'
合并选项(由于我目前正在使用它)没有给我任何结果。 关于如何执行此操作的任何想法?
提前致谢
这将起作用并生成您要查找的表:
df3=df1.join(df2.set_index('pk'),on='fk1').join(df2.set_index('pk'),on='fk2',lsuffix="_1",rsuffix="_2").fillna('-')
这使:
pk fk1 fk2 att1_1 att2_1 att1_2 att2_2
0 0001 2 3 ab ba ab bb
1 0002 2 - ab ba - -
2 0003 1 3 aa bb ab bb
在这里,它更容易阅读,只在通过联接添加的列上填充na:
#set the index to pk on df2 for the join to work
df2.set_index('pk',inplace=True)
#join fk1 of df1 to index of df2, then again for fk2
#since there is column overlap you can assign your desired suffixes
df3=df1.join(df2,on='fk1').join(df2,on='fk2',lsuffix="_1",rsuffix="_2")
#fill na in the last 4 columns with '-' since they could not join
df3[df3.columns[-4:]]=df3[df3.columns[-4:]].fillna('-')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.