python - 将按行排序的数据帧映射到原始列标签(Pandas),但仅限那些值大于零的标签

标签 python pandas sorting indices

我在这里问了一个问题Mapping row-wise sorted dataframe to original column labels (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

关于python - 将按行排序的数据帧映射到原始列标签(Pandas),但仅限那些值大于零的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45480286/

相关文章:

python - 语音识别无法正常工作(未检测到麦克风)

Python:如何编写指数移动平均线?

python - 模块未找到错误: No module named 'pandas' in GitHub Actions

algorithm - 如何计算 Shell-sort 算法的运行时间

node.js - 在字符串列表中查找最相似的文本

python - 使用 setup.py 将 python 项目安装为 systemd 服务

python - Numpy 数组声明错误

python 值到远程服务器上的 bash 行

python - 如何根据另一列的字符串值更新一列的行? python Pandas

sorting - 为什么归并排序更适合链表?