Отбросьте все строки, соответствующие условию, кроме первой - PullRequest
0 голосов
/ 09 июля 2020

Я хотел бы удалить все строки в кадре данных pandas, которые удовлетворяют определенному условию, кроме первого. Обратите внимание, что строки не идентичны, поэтому я не могу использовать drop_duplicates().

Например, если у меня есть фрейм данных:

Type    Count
A           4
X          33
X           5
E          51
Y           7

и я хочу фильтровать по условию: df[df.Type.isin(['X', 'Y'])] удалит все строки с типом X или Y, что приведет к:

Type    Count
A           4
E          51

, но я хочу сохранить первое вхождение, которое удовлетворяет условию, так что результат будет:

Type    Count
A           4
X          33
E          51

Мы будем благодарны за любые предложения.

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Мы можем установить первое значение False с помощью idxmax:

m = df.Type.isin(['X', 'Y'])
m.loc[m.idxmax()] = False
df[~m]

  Type  Count
0    A      4
1    X     33
3    E     51
0 голосов
/ 09 июля 2020

Попробуйте:

import numpy as np

df['k']=np.where(df['Type'].isin(['X', 'Y']), 'x', np.arange(len(df)))

res=df.drop_duplicates(subset='k').drop('k', axis=1)

Вывод:

>>> res

  Type Count
0    A     4
1    X    33
3    E    51
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...