对于每一行,我想首先找到哪些列具有 non-na
值,并删除具有 NaN
的其他列。然后创建第三个列,填充非 na 列名称(已修改)。
df
ID groupA_b1 groupA_b2 groupB_b1 groupB_b2 groupC_b1 groupC_b2
1 3 3 NaN NaN NaN NaN
2 4 5 NaN NaN NaN NaN
3 NaN NaN NaN NaN 12 1
4 NaN NaN 8 7 NaN NaN
Expected output
ID b1 b2 group
1 3 3 groupA
2 4 5 groupA
3 12 1 groupC
4 8 7 groupB
谢谢!
最佳答案
通过 MultiIndex
将列转换为多个索引后,我正在使用 stack
s=df.set_index('ID')
s.columns=pd.MultiIndex.from_tuples(s.columns.str.split('_').map(tuple))
s.stack(level=0).reset_index()
Out[153]:
ID level_1 b1 b2
0 1 groupA 3.0 3.0
1 2 groupA 4.0 5.0
2 3 groupC 12.0 1.0
3 4 groupB 8.0 7.0
关于python - 查找具有非 na 值的列,并使用非 na 列的名称创建第三列填充值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56436207/