Dropna, когда в другой строке отсутствуют данные ИЛИ drop_duplicates с NaN, совпадающим со всеми данными - PullRequest
1 голос
/ 16 января 2020

У меня есть данные, подобные следующим:

Index  ID    data1  data2 ...
0      123   0      NaN   ...
1      123   0      1     ...
2      456   NaN    0     ...
3      456   NaN    0     ...
...

Мне нужно отбросить строки, которые меньше или равны информации, доступной в других идентичных строках.

В приведенном выше примере строк 0 и либо 2 xor 3. должны быть удалены.

Моя лучшая попытка на данный момент - это довольно медленная, а также неработающая:

df.groupby(by='ID').fillna(method='ffill',inplace=True).fillna(method='bfill',inplace=True)
df.drop_duplicates(inplace=True)

Как мне лучше всего выполнить sh это цель

1 Ответ

2 голосов
/ 16 января 2020

Ваш подход выглядит нормально, просто использование назначения на месте здесь не работало (поскольку вы назначаете копию данных), используйте:

df = df.groupby(by='ID', as_index=False).fillna(method='ffill').fillna(method='bfill')

df.drop_duplicates()

   ID   data1  data2
0  123    0.0    1.0
2  456    NaN    0.0
...