Python 优先连接数据帧

Python 优先连接数据帧,python,pandas,dataframe,concatenation,Python,Pandas,Dataframe,Concatenation,我有两个类似的数据帧(df1&df2),具有列id、日期和计数 我想连接这两个df,如果{id,date}重叠,我想优先考虑df2中的行 e、 g: df1的记录是:ID12018/02/03,45 df2的记录是:ID12018/02/03,65 当我合并/concat时,我只需要来自df2的记录,即{id12018/02/03,65} 除了这个重复的解析逻辑,我还需要df的所有其他行。如何在python中实现这一点?您可以使用可选参数来删除重复项 作为一个玩具实例,考虑框架: df1 = p

我有两个类似的数据帧(
df1
&
df2
),具有列id、日期和计数

我想连接这两个df,如果
{id,date}
重叠,我想优先考虑df2中的行

e、 g: df1的记录是:
ID12018/02/03,45

df2的记录是:
ID12018/02/03,65

当我合并/concat时,我只需要来自df2的记录,即{
id12018/02/03,65
}


除了这个重复的解析逻辑,我还需要df的所有其他行。如何在python中实现这一点?

您可以使用可选参数来删除重复项

作为一个玩具实例,考虑框架:

df1 = pd.DataFrame({"id" : [1,2,3,4], "time" : [25, 35, 45, 15]})  
df2 = pd.DataFrame({"id" : [4,5,2,9], "time" : [19, 14, 11, 12]})  
然后,您只需将
df1
df2
连接起来,然后按
id
删除重复项,并保留
最后一个
,以确保从
df2
中保留信息

df_concatenated = pd.concat([df1, df2]).drop_duplicates(subset="id", keep="last")   

df_concatenated  
>  id  time
    1    25
    3    45
    4    19
    5    14
    2    11
    9    12

使用
set_index
方法,然后循环删除
df1
中所有遇到的
df2

 df1 = pd.DataFrame({'id' : [1,2,3], 'date' : ['d1', 'd2', 'd3'], 'count': [11, 22, 33]})
 df2 = pd.DataFrame({'id' : [1,2,5], 'date' : ['d1', 'd5', 'd6'], 'count': [44, 55, 66]})
 df1 = df1.set_index(['id', 'date'])
 df2 = df2.set_index(['id', 'date'])

 for index, row in df2.iterrows():
     if index in df1.index:
         df1 = df1.drop(index)
 print(df1.append(df2))

         count
id date
2  d2       22
3  d3       33
1  d1       44
2  d5       55
5  d6       66

我相信你要找的和这个差不多

根据anky_91的回答,您应该使用
df2获得所需的结果。首先组合(df1)

有关组合2个不规则数据帧时此函数行为的详细说明,请参阅