我肯定这已经被问过了,但是我不能以这样的方式来表达它,即我发现了类似的问题。我想做的是删除数据框的行,其中删除具有相同项目名称且所有值均为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
希望如此。我检查是否有人问过类似的问题,在这种情况下找不到任何东西。
答案 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