将一个数据框与另一个数据框重叠,仅保留新的或更改的行

时间:2016-01-26 10:21:05

标签: excel python-3.x pandas dataframe

我有两个pandas数据框,看起来类似于以下内容:

DF1:

RecorderID    GroupID    Location    ...    SomeColumn
CT-1000001    BV-        Cape Town          SomeValue
CT-1000002    MP-        Johannesburg       SomeValue
CT-1000003    BV-        Durban             SomeValue

DF2:

RecorderID    GroupID    Location    ...    SomeColumn
CT-1000001    BV-        Durban      ...    SomeValue
CT-1000003    BV-        Durban      ...    SomeValue

这两个数据帧实际上很大,有很多列和很多行。我想比较两个数据帧并以一个数据帧结束以完成以下操作(RecorderID是我的主键):

  1. 两个数据框中所有值不同的行必须采用df1的值并保留。
  2. 必须插入df1中但不存在于df2中的所有行。
  3. 必须删除两个数据框中包含且相同的所有值。
  4. 因此,以上面的例子为例,我最终会得到以下数据框:

    RecorderID    GroupID    Location    ...    SomeColumn
    CT-1000001    BV-        Cape Town          SomeValue
    CT-1000002    MP-        Johannesburg       SomeValue
    

    PS:我注意到在向Excel写出数据帧时,它会将索引列作为第一列插入。如何指定RecorderID是我的主键,它应该使用它来索引值?我试过了:

    df = read_excel('file.xlsx', 'sheet1', index_col='RecorderID')
    

    但是当我把它写出来时,只删除RecorderID列并添加一个带编号的索引列。

    谢谢!

1 个答案:

答案 0 :(得分:1)

如果您正在运行最新版本的pandas,那么您可以merge并将合并方法指定为left,此外我们可以设置indicator=True这会添加一列{ {1}}您会告诉_mergeleft_only中的行是否存在,我们可以将这些行过滤掉:

both