我在这里问了一个问题Mapping row-wise sorted dataframe to original column labels (Pandas)但是,我希望通过只显示那些相应值大于0的列索引来扩展这个问题。
我正在使用Dataframe -
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
答案 0 :(得分:1)
您可以使用:
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