将按行排序的数据框映射到原始列标签(Pandas),但仅限于值大于零的那些
Mapping row-wise sorted dataframe to original column labels (Pandas), but only those having value greater than zero
我在这里问了一个问题 但是,我希望通过只显示那些对应值大于 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
我在这里问了一个问题
我有一个数据框 -
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