gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:40:20 25 4
gpt4 key购买 nike

我有两个看起来像下面这样的 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 是我的主键):
  • 两个数据框中值不同的所有行必须采用 df1 的值并保留。
  • 必须插入 df1 中存在但 df2 中不存在的所有行。
  • 必须删除两个数据框中包含且相同的所有值。

  • 因此,以上面的示例为例,我最终会得到以下数据框:
    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 列并在我将其写出到 excel 时添加了一个编号的索引列。

    谢谢!

    最佳答案

    如果您正在运行最新版本的 pandas,那么您可以 merge 并指定合并方法为left , 另外我们可以设置 indicator=True这会增加一列 _merge你会告诉 left_only 中是否存在这些行或 both ,然后我们可以过滤掉这些行:

    In [91]:
    merged = pd.merge(df1,df2,indicator=True, how='left' )
    merged

    Out[91]:
    RecorderID GroupID Location SomeColumn _merge
    0 CT-1000001 BV- Cape Town SomeValue left_only
    1 CT-1000002 MP- Johannesburg SomeValue left_only
    2 CT-1000003 BV- Durban SomeValue both

    In [92]:
    merged[merged['_merge'] == 'left_only']

    Out[92]:
    RecorderID GroupID Location SomeColumn _merge
    0 CT-1000001 BV- Cape Town SomeValue left_only
    1 CT-1000002 MP- Johannesburg SomeValue left_only

    关于excel - 将一个数据框与另一个数据框重叠并仅保留新的或更改的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35011551/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com