Python Pandas расплавляет редкий фрейм данных - PullRequest
0 голосов
/ 14 марта 2019

У меня есть датафрейм, который выглядит следующим образом

   a    b        z
1 NULL NULL  ... 1
2 NULL  1    ... NULL
3  1   NULL  ... NULL

Первый столбец всегда заполнен, и справа от него есть много других. Из столбцов от a до z один заполнен, остальные нет.

Я хотел бы преобразовать этот фрейм данных в фрейм данных из двух столбцов с заголовками столбцов от a до z во втором столбце. Приведенный выше пример будет преобразован в этот.

  The_Column
1    z
2    b
3    a

Функция pandas.melt () близка к тому, что мне нужно, но она не обрабатывает значения NULL. Я забочусь только об одной ячейке в столбцах от B до Z, которая заполнена.

Есть ли элегантный способ справиться с этой проблемой?

Ответы [ 2 ]

1 голос
/ 14 марта 2019

тебе нужно растопить, а потом df.dropna () - вот и все

это должно работать:

df.set_index('a').melt().dropna().reset_index()
0 голосов
/ 14 марта 2019

Использование stack (по умолчанию отбрасывает NA):

x = (df.set_index('a')
         .stack()
         .reset_index()
         .drop(columns=0)
         .rename(columns={'level_1': 'The_Column'})

print(x)

Вывод:

   a The_Column
0  1          z
1  2          b
2  3          c
...