繁体   English   中英

根据条件删除Panadas数据框的行

[英]Dropping rows of panadas dataframe based on conditional

我肯定这已经被问过了,但是我不能以这样的方式来表达,即我发现了类似的问题。 我想做的是删除数据框的行,其中具有相同项目名称且所有值均为0的行都将被删除。

例如。 我的一列是“商品名”,另一列是“值”。 “项目名称”可能会重复很多次。 我想检查每个“商品名称”,如果所有其他相同名称的商品的值都为0,则删除这些行

我知道这应该很简单,但是我无法理解。

为了更清楚一点,在这里

    itemname value
0      a       0
1      b       100
2      c       0
3      a       0
4      b       75
5      c       90

由于所有项目的值为0,因此应将其删除。

    itemname value
1      b       100
2      c       0
3      b       75
4      c       90

希望有道理。 我检查是否有人问过类似问题并且在这种情况下找不到任何东西。

采用:

df = df[df.groupby('itemname')['value'].transform('any')]
print (df)
  itemname  value
1        b    100
2        c      0
4        b     75
5        c     90

使用isin

df[df.itemname.isin(df.loc[df.value!=0,'itemname'])]
Out[543]: 
  itemname  value
1        b    100
2        c      0
4        b     75
5        c     90

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM