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