Отбрасывание строк в фрейме данных Panadas на основе условного - PullRequest
0 голосов
/ 01 октября 2018

Я уверен, что об этом уже спрашивали, но я не могу сформулировать это так, чтобы я нашел похожий вопрос.То, что я хотел бы сделать, это удалить строки моего фрейма данных, где удаляются строки с одинаковыми именами элементов, у которых все имеют значение 0.

Например.Один из моих столбцов - это «имя элемента», а другой - «значение».«itemname» может повторяться много раз.Я хочу проверить для каждого 'itemname', если все другие элементы с таким же именем имеют значение 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 голосов
/ 01 октября 2018

Использование 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
0 голосов
/ 01 октября 2018

Использование:

df = df[df.groupby('itemname')['value'].transform('any')]
print (df)
  itemname  value
1        b    100
2        c      0
4        b     75
5        c     90
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...