Удалить дубликаты, но игнорировать нули - PullRequest
0 голосов
/ 03 мая 2018

Итак, я знаю, что вы можете использовать что-то вроде этого для удаления дублирующих строк:

the_data.drop_duplicates(subset=['the_key'])

Однако, если the_key равно нулю для некоторых значений, как показано ниже:

   the_key  C  D
1      NaN  *  *
2      NaN     *
3      111  *  *
4      111

Он сохранит те, которые отмечены в столбце C. Можно ли заставить drop_duplicates обрабатывать все nan как отдельные и получать выходные данные, сохраняя данные, как в столбце D?

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Я бы сделал это так:

dupes = the_data.duplicated(subset=['the_key'])
dupes[the_data['the_key'].isnull()] = False
the_data = the_data[~dupes]
0 голосов
/ 03 мая 2018

Использовать duplicated в цепочке с isna и фильтровать по boolean indexing:

df = df[(~df['the_key'].duplicated()) | df['the_key'].isna()]
#fol oldier pandas versions
#df = df[(~df['the_key'].duplicated()) | df['the_key'].isnull()]
print (df)
   the_key  C    D
1      NaN  *    *
2      NaN       * 
3    111.0  *    *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...