Python Pandas:仅当列值唯一时,才将数据框追加到另一个数据框

时间:2018-08-22 14:54:24

标签: python pandas append conditional

我有两个要附加在一起的数据框。以下是示例。

df_1:

Code    Title
103     general checks 
107     limits
421     horseshoe
319     scheduled 
501     zonal 

df_2

Code    Title
103     hello 
108     lucky eight 
421     little toe 
319     scheduled cat
503     new item 

仅当df_1中的df_2中的代码号不存在时,我才想将df_2附加到df_1中。

下面是我想要的数据框:

Code    Title
103     general checks 
107     limits
421     horseshoe
319     scheduled 
501     zonal 
108     lucky eight 
503     new item

我已经搜索了Google和Stackoverflow,但在此特定情况下找不到任何东西。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您可以先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

答案 2 :(得分:0)

类似于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