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

时间:2018-10-01 14:11:24

标签: python pandas

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

希望如此。我检查是否有人问过类似的问题,在这种情况下找不到任何东西。

2 个答案:

答案 0 :(得分:1)

使用:

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

答案 1 :(得分:1)

使用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