如何融合数据框 - 在熔化数据框的字段中获取列名称

问题描述 投票:0回答:3

我有一个如下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

任何建议都有帮助。谢谢。

python dataframe melt
3个回答
1
投票

只需按照以下步骤操作:熔化,dropna,排序列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
投票

这应该工作。

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

0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.