将逐行排序的数据帧映射到原始列标签 (Pandas),但仅将值大于零的数据帧映射到原始列标签



>我在这里问了一个问题,将逐行排序的数据帧映射到原始列标签(Pandas(,但是,我希望通过仅显示相应值大于 0 的列索引来扩展此问题。

我有一个数据帧 -

df 
A  B  C   D
0  8  3  6   2
1  1 -3  5   2
2  4  9  5  10
3  2 -4 -8  -2

我按降序对每一行进行排序,而不是保存值,而是保存相应的列名,但条件是排除那些相应值为负的列名。

最终结果是:

df_col 
1  2  3   4
0  A  C  B   D
1  C  D  A   
2  D  B  C   A
3  A  

您可以使用:

df = df.apply(lambda x: pd.Series(x[x > 0].sort_values(ascending=False).index), axis=1)
print (df)
0    1    2    3
0  A    C    B    D
1  C    D    A  NaN
2  D    B    C    A
3  A  NaN  NaN  NaN

最新更新