python - 查找具有非 na 值的列,并使用非 na 列的名称创建第三列填充值

标签 python pandas dataframe null multiple-columns

对于每一行,我想首先找到哪些列具有 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/

相关文章:

python - xgboost 中的映射评估指标

python - 如何从 cfg 文件中检索键值对

python - 如何使用一个键将多个列表值的数据框制作成python中的字典?

python - Pandas 数据框的颜色行并转换为 HTML 表格

python - 使用 Pandas 进行多列分组以找到每组的最大值

python - 如何在 for 循环中使用 Pandas groupby (FutureWarning)

python - 使用来自不同数据帧的数据规范数据帧中的数据

python - 让 gspread 使用相同的数据更新多个电子表格文件

python - 根据 Pandas 中的多索引条件/字符删除行

r - 以group_by方式统计事件(R)