大佬教程收集整理的这篇文章主要介绍了组合列值匹配的两个数据框,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个包含相似列的数据框:
@H_489_5@ ID prop1 1 UUU &&& 2 III *** 3 OOO ))) 4 PPP %%%
和
@H_489_5@ ID prop2 1 UUU 1234 2 WWW 4567 3 III 7890 5 EEE 0123 6 OOO 3456 7 RRR 6789 8 PPP 9012
我需要合并这两个 ID 匹配的数据帧,并将 prop2 列添加到原始数据中。
@H_489_5@ ID prop1 prop1 1 UUU &&& 1234 2 III *** 7890 3 OOO ))) 3456 4 PPP %%% 9012
我尝试了合并、连接、连接、for、iter 等的所有组合。它要么合并失败,要么丢失索引,要么直接删除列值。
您可以使用@H_489_5@pd.merge():
@H_489_5@pd.merge(df1,df2,on='ID')
输出:
@H_489_5@ ID prop1 prop2 0 UUU &&& 1234 1 III *** 7890 2 OOO ))) 3456 3 PPP %%% 9012
您也可以使用 @H_489_5@df.merge() 如下::
@H_489_5@df1.merge(df2,on='ID')
同样的结果。
无论使用 @H_489_5@.merge() 还是 @H_489_5@pd.merge(),@H_489_5@df.merge() 上的默认参数都是 @H_489_5@how='inner'。因此,您已经在执行内部联接而不指定 @H_489_5@how= 参数。
如果需要更复杂的情况来维护@H_489_5@df1的索引@H_489_5@1,2,3,4而不是@H_489_5@0,1,3,可以通过在合并前重置索引然后在临时{{重置索引时生成的 {1}} 列:
@H_489_5@index
输出:
@H_489_5@df1.reset_index().merge(df2,on='ID').set_index('index')
现在,保留原始 @H_489_5@ ID prop1 prop2 index 1 UUU &&& 1234 2 III *** 7890 3 OOO ))) 3456 4 PPP %%% 9012 的索引 @H_489_5@1 2 3 4。
或者,如果您不希望轴标签 @H_489_5@df1 出现在行索引的顶部,您可以执行 @H_489_5@rename_axis() 如下:
@H_489_5@index
输出:
@H_489_5@df1.reset_index().merge(df2,on='ID').set_index('index').rename_axis(index=NonE),
您还可以使用 @H_489_5@.map 将 prop2 值添加到原始数据框中,其中 ID 列值匹配。
@H_489_5@df1['prop2'] = df1['ID'].map(Dict(df2[['ID','prop2']].to_numpy())
如果原始数据框中的任何 ID 不在第二个数据框中(因此没有可以传递的 prop2 值,您可以通过添加 @H_489_5@.fillna() 与值来填补这些漏洞您的选择。
@H_489_5@df1['prop2'] = df1['ID'].map(Dict(df2[['ID','prop2']].to_numpy()).fillna(your_fill_value_herE)
以上是大佬教程为你收集整理的组合列值匹配的两个数据框全部内容,希望文章能够帮你解决组合列值匹配的两个数据框所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。