【问题标题】:python, pandas, drop rows by conditionpython,pandas,按条件删除行
【发布时间】:2021-11-22 01:30:05
【问题描述】:

您好,我需要帮助按条件删除一些行:如果估计价格减去价格超过 1500(正),则删除该行

    price      estimated price 
 0  13295                13795
 1  19990                22275
 2   7295                 6498

例如只有索引 1 会被删除 谢谢!

【问题讨论】:

    标签: python pandas dataframe conditional-statements


    【解决方案1】:

    您可以使用pd.drop(),在其中您可以按索引删除特定行。 :

    >>> df.drop(df[(df['estimated price']-df['price'] >= 1500)].index)
    
       price  estimated price
    0  13295            13795
    2   7295             6498
    

    index 1 被丢弃。

    请注意,此方法假定您的 index 是唯一的。如果不是这样,boolean indexing 是更好的解决方案。

    【讨论】:

    • 是的,它只适用于唯一索引。不过,根据我们上面的样本数据,我假设了这一点。
    • 感谢您的提示,请继续指出这些问题。我们都在这里学习:)
    • 是的,有时只考虑其他解决方案;)
    【解决方案2】:

    如果在boolean indexing 中减去Series.le 后,如果小于或等于1500,则更改获取所有行的逻辑:

    df1 = df[df['estimated price'].sub(df['price']).le(1500)]
    

    1500 一样工作,像反转掩码一样工作:

    df1 = df[~df['estimated price'].sub(df['price']).gt(1500)]
    

    【讨论】:

      猜你喜欢
      • 2017-12-22
      • 1970-01-01
      • 2021-02-28
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      相关资源
      最近更新 更多