Как удалить все столбцы NaN для каждой подкатегории? - PullRequest
0 голосов
/ 27 октября 2018

У меня есть такой фрейм данных Python Pandas с большим количеством столбцов и строк.Я хочу удалить все столбцы с NaN для каждой подкатегории, которые принадлежат к той же категории.Как я могу удалить все столбцы NaN для каждой из подкатегорий?

     Categ. Subcat. cond1 cond2 cond3 cond4 condk
0    A          k     NaN   6     4     9     8
1    A          k     NaN   7     3     NaN   2
2    A          p      8    1     NaN   NaN   3
3    A          s      4    NaN   2     8     NaN
4    A          t     NaN   3     NaN   4     1
5    A          t      2    9     NaN   5     4

После удаления cond1 для Subcat.k, выходной фрейм данных должен выглядеть следующим образом.У меня есть много столбцов, которые содержат все NaN для подкатегории.Например, субкат.k, скажем, 10 столбцов / cond1, cond5, cond9, con20 и т. д. / с NaN в качестве значения для этого конкретного подкадра.

Categ. Subcat. cond2 cond3 cond4...condk 
A          k      6    4     9     8 
A          k      7    3    NaN    2
A          p      1   NaN   NaN    3
A          s     NaN   2     8    NaN 
A          t      3   NaN    4     1 
A          t      9   NaN    5     4

1 Ответ

0 голосов
/ 27 октября 2018

Вот пример DataFrame, поэтому его можно копировать:

     Categ. Subcat. cond1 cond2 cond3 cond4 condk
0    A          k     NaN   6     4     9     8
1    A          k     NaN   7     3     NaN   2
2    A          p      8    1     NaN   NaN   3
3    A          s      4    NaN   2     8     NaN
4    A          t     NaN   3     NaN   4     1
5    A          t      2    9     NaN   5     4

df = df.rename(columns={'Categ.':'C', 'Subcat.':'S'})

Вы можете группировать, как это: gb = df.groupby('S')

Тогда:

for n, g in gb:
    print(n, '\n', g.dropna(axis=1))
k
    C  S  cond2  cond3  condk
0  A  k    6.0    4.0    8.0
1  A  k    7.0    3.0    2.0
p
    C  S  cond1  cond2  condk
2  A  p    8.0    1.0    3.0
s
    C  S  cond1  cond3  cond4
3  A  s    4.0    2.0    8.0
t
    C  S  cond2  cond4  condk
4  A  t    3.0    4.0    1.0
5  A  t    9.0    5.0    4.0

Это не такдействительно ясно, как вы хотите удалить строки / серии из DataFrame, но это должно дать вам начало ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...