Python 查找具有非na值的列,并使用非na列创建第三列填充值';姓名

Python 查找具有非na值的列,并使用非na列创建第三列填充值';姓名,python,pandas,dataframe,null,multiple-columns,Python,Pandas,Dataframe,Null,Multiple Columns,对于每一行,我想先找到哪些列具有非na值,然后删除具有NaN的其他列。然后创建第三列,填充非na列名(已修改) 谢谢 在通过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

对于每一行,我想先找到哪些列具有
非na
值,然后删除具有
NaN
的其他列。然后创建第三列,填充非na列名(已修改)


谢谢

在通过
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
使用

输出

ID
1    groupA_b1
2    groupA_b1
3    groupC_b1
4    groupB_b1
dtype: object
如果您只想要
A
C
等:

df['group'].str.get(5)

0    A
1    A
2    C
3    B
Name: group, dtype: object
df['group'] = df.set_index('ID').notnull().idxmax(1).tolist()
ID
1    groupA_b1
2    groupA_b1
3    groupC_b1
4    groupB_b1
dtype: object
df['group'].str.get(5)

0    A
1    A
2    C
3    B
Name: group, dtype: object