【问题标题】:Drop rows that contain duplicate vlaues in two columns in pandas dataframe删除熊猫数据框中两列中包含重复值的行
【发布时间】:2019-08-02 01:00:40
【问题描述】:

我有一个包含 new_price 和 old_price 列的数据框我想删除这两列中包含重复值的行。

Product old_price   new_price
prod_name   44.05   44.05
prod_name   76.95   76.95
prod_name   2       -1
prod_name   34.95   -1
prod_name   45.95   45.95
prod_name   54.7    54.7
prod_name   29.95   29.95
prod_name   0       24.95
prod_name   1       41.1
prod_name   72.95   72.95
prod_name   32.95   32.95
prod_name   19.95   19.95
prod_name   43      43
prod_name   9       79
prod_name   40.5    40.5
prod_name   32      32

但代码返回错误结果,某些行包含重复值。

price_log[price_log['old_price'] != price_log['new_price']]


Product old_price   new_price
prod_name   2       -1
prod_name   34.95   -1
prod_name   0       24.95
prod_name   1       41.1
prod_name   43      43
prod_name   9       79
prod_name   40.5    40.5
prod_name   32      32

想要的输出是

Product old_price   new_price
prod_name   2       -1
prod_name   34.95   -1
prod_name   0       24.95
prod_name   1       41.1
prod_name   9       79

【问题讨论】:

  • 它对我有用。您可能应该检查40.5 40.5 是否属于同一类型,例如strfloat
  • 不要相信== 总是为“相等”的浮点值返回True

标签: python pandas dataframe


【解决方案1】:

尝试将您的条目转换为浮点数:

price_log[price_log['old_price'].astype(float) != price_log['new_price'].astype(float)]

【讨论】:

  • 为什么要平等? OP 想放弃它们。
  • 可能还值得一提的是内置的drop_duplicates()
  • 好点。但是对于drop_duplicates(),您也会遇到 str-vs-float 问题,对吧?
  • 当他创建 pandas df 时,他应该将 dtype 设置为 float(假设他的所有值都是 float),那么这首先就不是问题。
猜你喜欢
  • 2017-09-27
  • 2019-06-19
  • 2016-09-09
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 2023-01-28
  • 2019-11-14
  • 1970-01-01
相关资源
最近更新 更多