【问题标题】:How to Drop All The Rows Based on Multiple Values Found in the "Fruit "Column?如何根据“水果”列中找到的多个值删除所有行?
【发布时间】:2016-12-21 01:04:00
【问题描述】:

我有这个简单的数据框

Num   Fruit   Price
1     Apple   1.00
1     Apple   1.00
2     Apple   1.50
2     Orange  1.50
3     Orange  1.00
3     Banana  0.50

我想删除所有有水果 AppleOrange 的行

预期的输出应该是这样的:

Num  Fruit   Price
3    Banana  0.50

我尝试执行以下语法,但不知何故它没有删除数据框中的所有行

>>> df.drop(df.Fruit.isin(["Apple","Orange"]))
Fruit Num Price
2   Apple   2  1.50
3  Orange   2  1.50
4  Orange   3  1.00
5  Banana   3  0.50

任何建议如何解决这个问题?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您需要传递要删除的行的索引,但您传递的是一个布尔数组。您可以将其更改为:

    df.drop(df[df.Fruit.isin(["Apple", "Orange"])].index)
    Out: 
       Num   Fruit  Price
    5    3  Banana    0.5
    

    或者您可以选择不包含苹果或橙子的行:

    df[~(df.Fruit.isin(["Apple", "Orange"]))]
    Out: 
       Num   Fruit  Price
    5    3  Banana    0.5
    

    【讨论】:

    • 请注意,您应该将参数 inplace=True 传递给 drop 以改变数据框,而不是返回删除行的视图。
    猜你喜欢
    • 2014-10-16
    • 2015-03-28
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    相关资源
    最近更新 更多