如何根据"水果"栏中的多个值删除所有行?

MEh*_*san 0 python dataframe pandas

我有这个简单的数据帧

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
Run Code Online (Sandbox Code Playgroud)

我想删除所有这些都是水果中的行Apple或Orange

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

Num  Fruit   Price
3    Banana  0.50
Run Code Online (Sandbox Code Playgroud)

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

>>> 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
Run Code Online (Sandbox Code Playgroud)

有什么建议如何解决这个问题?

ayh*_*han 5

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

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

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

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