首页 > 解决方案 > 根据多列的值填充一列

问题描述

我有以下数据框

df
A    B    C    D
1    2    NA   3
2    3    NA   1
3    NA   1    2

A、B、C 和 D 是问题的答案。基本上,受访者将答案从 1 到 3 排序,这意味着一行不能有 2 个相同的值。我正在尝试创建一个新列,它是前 3 项内容的摘要,例如。

1st    2nd    3rd
A      B      D
D      A      B
C      D      A

这种格式将使我更容易得出结论,例如,这里是第三个最佳答案。

我没有找到任何方法来做到这一点。请问你能帮帮我吗?非常感谢!

标签: pythonpandas

解决方案


一种方法是使用argsort和索引列:

pd.DataFrame(df.columns[df.values.argsort()[:,:-1]],
             columns=['1st', '2nd', '2rd'])

  1st 2nd 2rd
0   A   B   D
1   D   A   B
2   C   D   A

推荐阅读