为了账号安全,请及时绑定邮箱和手机立即绑定

Python Pandas:仅当列值唯一时才将数据帧附加到另一个数据帧

Python Pandas:仅当列值唯一时才将数据帧附加到另一个数据帧

MMMHUHU 2021-05-30 07:15:28
我有两个要附加在一起的数据框。以下是示例。df_1:Code    Title103     general checks 107     limits421     horseshoe319     scheduled 501     zonal df_2Code    Title103     hello 108     lucky eight 421     little toe 319     scheduled cat503     new item 仅当 df_2 中的代码号在 df_1 中不存在时,我才想将 df_2 附加到 df_1。下面是我想要的数据框:Code    Title103     general checks 107     limits421     horseshoe319     scheduled 501     zonal 108     lucky eight 503     new item我已经通过 Google 和 Stackoverflow 进行了搜索,但在此特定案例中找不到任何内容。
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

只是append过滤后的数据框


df3 = df2.loc[~df2.Code.isin(df.Code)]

df.append(df3)


    Code    Title

0   103 general checks

1   107 limits

2   421 horseshoe

3   319 scheduled

4   501 zonal

1   108 lucky eight

4   503 new item

请注意,您最终可能会得到重复的索引,这可能会导致问题。为避免这种情况,您可以.reset_index(drop=True)获取一个没有重复索引的新 df。


df.append(df3).reset_index(drop=True)


    Code    Title

0   103 general checks

1   107 limits

2   421 horseshoe

3   319 scheduled

4   501 zonal

5   108 lucky eight

6   503 new item


查看完整回答
反对 回复 2021-06-01
?
慕标5832272

TA贡献1966条经验 获得超4个赞

你可以concat然后drop_duplicates。假设每个数据框内Code都是唯一的。


res = pd.concat([df1, df2]).drop_duplicates('Code')


print(res)


   Code           Title

0   103  general_checks

1   107          limits

2   421       horseshoe

3   319       scheduled

4   501           zonal

1   108     lucky_eight

4   503        new_item


查看完整回答
反对 回复 2021-06-01
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

与concat()类似,您也可以使用merge:


df3 = pd.merge(df_1, df_2, how='outer').drop_duplicates('Code')


    Code    Title

0   103 general checks

1   107 limits

2   421 horseshoe

3   319 scheduled

4   501 zonal

6   108 lucky eight

9   503 new item  


查看完整回答
反对 回复 2021-06-01
  • 3 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号