【问题标题】:Combining two pandas dataframes without including duplicates?结合两个熊猫数据框而不包含重复项?
【发布时间】:2020-02-24 14:02:27
【问题描述】:

我有两个要合并的数据框不创建重复行,两个数据框的列标签保持不变,date 设置为索引两者都有。

df1:

date                 A   B        C
2020-02-21 16:00:00  10  32.0000  23   
2020-02-21 15:59:00  23  11.2100  10   
2020-02-21 15:58:00  82  38.2350  18   

和

df2:

date                 A   B        C
2020-02-21 15:59:00  23  11.2100  10   
2020-02-21 15:58:00  82  38.2350  18   
2020-02-21 15:57:00  32  22.2900  76 

这是想要的结果:

date                 A   B        C
2020-02-21 16:00:00  10  32.0000  23   
2020-02-21 15:59:00  23  11.2100  10   
2020-02-21 15:58:00  82  38.2350  18   
2020-02-21 15:57:00  32  22.2900  76 

我应该怎么做(使用熊猫)?

【问题讨论】:

  • 嗨,仅在 A 列上重复,还是在所有列数据上重复?
  • 分享你编写的代码?
  • 我不希望任何 行 作为一个整体重复。数据是股市数据,因此如果有意义的话,列将永远不会根据日期而有所不同

标签: python pandas dataframe


【解决方案1】:

我不确定是否有更优雅的解决方案,但您可以先将数据帧与重复项连接起来,然后再删除它们。

output = pd.concat([df1, df2]).drop_duplicates()

pd.concat:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html

drop_duplicates:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html

【讨论】:

  • 这似乎很好用。我假设这会检查每一行的每一列以删除重复项。有没有一种方法你知道我可以让它检查索引是否重复?
  • @JeffoJam 你是对的。您可以使用子集属性来执行此操作。假设日期是您的索引,输出 = pd.concat([df1, df2]).drop_duplicates(subset='date')
  • 我确实尝试过并仔细检查了我的索引确实设置为'date',但它返回:raise KeyError(diff)KeyError: Index(['date'], dtype='object')
  • 通过``` ```,你的意思是它什么也没返回?也许你可以用你的数据框和新代码更新你的问题,这样我就可以看得更清楚了。
猜你喜欢
  • 2022-01-10
  • 2017-11-13
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 2018-04-08
相关资源
最近更新 更多