Панды отбрасывают столбцы на основе имени столбца И содержимого - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть такой фрейм данных:

df = pd.DataFrame([[1,2,np.nan,np.nan,5],[3,4,np.nan,np.nan,6]],columns=['a','b','c','Unnamed: 4','Unnamed: 5'])

df
Out[16]: 
   a  b   c  Unnamed: 4  Unnamed: 5
0  1  2 NaN         NaN           5
1  3  4 NaN         NaN           6

Я хочу удалить столбцы, которые ОБА и все имеют НО и имеют «Безымянный:» в имени (как это часто случается при импорте данных из файла сстолбцы, которые не имеют названия в заголовке).Желаемый вывод:

   a  b   c  Unnamed: 5
0  1  2 NaN           5
1  3  4 NaN           6

Я могу сделать:

df[[col for col in df.columns if 'Unnamed: ' not in col]]
Out[18]: 
   a  b   c
0  1  2 NaN
1  3  4 NaN

или:

df.dropna(how='all',axis=1)

Out[19]: 
   a  b  Unnamed: 5
0  1  2           5
1  3  4           6

Есть ли питонский способ сделать обе эти вещи одновременно (связан сИ не ИЛИ)?

1 Ответ

0 голосов
/ 15 ноября 2018

filter + isnull + drop

Сначала отфильтруйте ваш фрейм данных по меткам столбцов, затем рассчитайте, какие из нихвсе null:

nulls = df.filter(like='Unnamed').isnull().all()

df = df.drop(nulls[nulls].index, axis='columns')

print(df)

   a  b   c  Unnamed: 5
0  1  2 NaN           5
1  3  4 NaN           6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...