фильтр панд по нескольким столбцам NULL - PullRequest
0 голосов
/ 21 февраля 2019

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

df = pd.DataFrame({'Last_Name': ['Smith', None, 'Brown'], 
                   'First_Name': ['John', None, 'Bill'],
                   'Age': [35, 45, None]})

, и я могу вручную отфильтровать его, используя:

df[df.Last_Name.isnull() & df.First_Name.isnull()]

, но это раздражает, так как мне нужно много раз обзвонитьдубликата кода для каждого столбца / условия .Не поддерживается, если имеется большое количество столбцов.Можно ли написать функцию, которая генерирует этот код на Python для меня?

Некоторая справка: мой фрейм данных pandas основан на исходной многомерной агрегации на основе SQL (группировки-наборы) https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-multi-dimensional-aggregation.htmlпоэтому всегда некоторые разные столбцы имеют значение NULL.Теперь я хочу эффективно выбрать эти разные группы и проанализировать их отдельно в пандах.

1 Ответ

0 голосов
/ 21 февраля 2019

Используйте filter:

df[df.filter(like='_Name').isna().all(1)]

  Last_Name First_Name   Age
1      None       None  45.0

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

cols = ['First_Name', 'Last_Name']
df[df[cols].isna().all(1)]

  Last_Name First_Name   Age
1      None       None  45.0
...