我正在尝试合并两个数据帧并消除重复。
这是DF#1:
import pandas as pd
data1 = {'id':['168'],'group_id':['360002136432'],'ticket_form_id':['360000159712']}
df1 = pd.DataFrame(data1)
print(df1)
这是DF#2
data2 = {'id':['362936613051','362936613051','362936613051'],'ticket_id':['168','168','168']}
df2 = pd.DataFrame(data2)
print(df2)
我正在尝试合并或合并DF#1和DF#2,所以看起来像这样。
id group_id ticket_form_id ID
168 360002136432 360000159712 362936613051
这是DF#1.id和DF#2.ticket_id之间的某种内部联接(我认为),但是在合并数据帧中我总是收到很多欺骗。如何消除合并数据框中的重复项。
因此,对于ID = 8,我希望看到362563740691,对于ID = 10,我希望看到362563746711。
相反,我看到的是ID = 8的362785076491。
答案 0 :(得分:2)
您的df2确实有很多重复的值。我不知道是否需要保留冗余数据,如果不需要,可以删除df2重复项
df2.drop_duplicates(inplace = True)
print(df1.merge(df2, left_on = 'id', right_on = 'ticket_id'))
这将立即删除最终数据框中的重复行。
另一种可能性是在合并后删除重复的行。
df1 = df1.merge(df2, left_on = 'id', right_on = 'ticket_id', how = 'inner')
df1.drop_duplicates(inplace = True)
print(df1)
答案 1 :(得分:1)
假设df2中的所有id / ticket_id对均重复,如示例所示:
df_new=df1.merge(df2[~df2.duplicated()==1], left_on='id', right_on='ticket_id').drop('ticket_id', axis=1)