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

У меня есть df как показано ниже

     name       0    1    2    3    4
 0   alex      NaN  NaN  aa   bb  NaN
 1   mike      NaN  rr  NaN  NaN  NaN
 2   rachel    ss  NaN  NaN  NaN  ff
 3   john      NaN  ff  NaN  NaN  NaN

функция плавления должна возвращать ниже

     name      code
 0   alex      2   
 1   alex      3   
 2   mike      1  
 3   rachel    0  
 4   rachel    4
 5   john      1

Любое предложение полезно.спасибо.

Ответы [ 3 ]

1 голос
/ 05 апреля 2019

Просто выполните следующие действия: расплавить, отбросить, отсортировать столбец name, сбросить индекс и, наконец, удалить ненужные столбцы

In [1171]: df.melt(['name'],var_name='code').dropna().sort_values('name').reset_index().drop(['index', 'value'], 1)
Out[1171]:
     name code
0  alex    2
1  alex    3
2  john    1
3  mike    1
4  rachel  0
5  rachel  4
0 голосов
/ 05 апреля 2019
df.set_index('name').unstack().reset_index().rename(columns={'level_0':'Code'}).dropna().drop(0,axis =1)[['name','Code']].sort_values('name')

вывод будет

name    Code
alex    2
alex    3
john    1
mike    1
rachel  0
rachel  4
0 голосов
/ 05 апреля 2019

Это должно работать.

 df.unstack().reset_index().dropna()
...