【问题标题】:merge one pandas dataframe to another and remove value which is present in first dataframe from second dataframe将一个熊猫数据帧合并到另一个数据帧并从第二个数据帧中删除第一个数据帧中存在的值
【发布时间】:2021-04-26 22:27:09
【问题描述】:

我有两个熊猫数据框,如下所示:-

DF1

     date1      hours   value    Field  count1
1   2021-01-15   9       eps       EPS          770915
2   2021-01-22   9       eps       EPS          797503

DF2

        date1       hours   value      Field    count1
  0     2021-01-09   9       eps        EPS     0
  1     2021-01-10   9       eps        EPS     0
  2     2021-01-11   9       eps        EPS     0
  3     2021-01-12   9       eps        EPS     0
  4     2021-01-13   9       eps        EPS     0
  5     2021-01-14   9       eps        EPS     0
  6     2021-01-15   9       eps        EPS     0
  7     2021-01-16   9       eps        EPS     0
  8     2021-01-17   9       eps        EPS     0
  9     2021-01-18   9       eps        EPS     0
 10     2021-01-19   9       eps        EPS     0
 11     2021-01-20   9       eps        EPS     0
 12     2021-01-21   9       eps        EPS     0
 13     2021-01-22   9       eps        EPS     0

我想要如下输出:-

结果:-

        date1       hours   value      Field    count1
  0     2021-01-09   9       eps        EPS     0
  1     2021-01-10   9       eps        EPS     0
  2     2021-01-11   9       eps        EPS     0
  3     2021-01-12   9       eps        EPS     0
  4     2021-01-13   9       eps        EPS     0
  5     2021-01-14   9       eps        EPS     0
  6     2021-01-15   9       eps        EPS     770915
  7     2021-01-16   9       eps        EPS     0
  8     2021-01-17   9       eps        EPS     0
  9     2021-01-18   9       eps        EPS     0
 10     2021-01-19   9       eps        EPS     0
 11     2021-01-20   9       eps        EPS     0
 12     2021-01-21   9       eps        EPS     0
 13     2021-01-22   9       eps        EPS     797503

DF1 和 DF2 列的数据类型如下:-

date1          object
hours           int64 
value          object
Field          object
count1          int64

DF2 始终包含 14 天,而 DF1 包含介于 1 到 14 之间的可变天数。我想要包含缺失天数字段且第二个数据帧为零的结果数据帧。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    将concat 与DataFrame.drop_duplicates 一起使用:

    df = (pd.concat([DF1, DF2], ignore_index=True)
            .drop_duplicates(['date1','hours','value','Field']))
    

    如果需要排序输出:

    df = (pd.concat([DF1, DF2], ignore_index=True)
            .drop_duplicates(['date1','hours','value','Field'])
            .sorT_values(['date1','hours','value','Field']))
    

    【讨论】:

    • 感谢您的回复@jezrael。我试过你的方法,但它不起作用。它从两个帧返回重复值。
    • @vishwajeetMane - 问题应该是对哪些列进行重复测试?也许只需要.drop_duplicates(['date1']))。
    • @vishwajeetMane - 使用示例数据进行测试并且工作正常,因此在实际数据中存在一些差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2018-08-18
    相关资源
    最近更新 更多