创建列
fst_imp
:返回列名,其中值是每行最小值的索引。
snd_imp
:value是列名,其中value是每一行的第二个小值的索引。
trd_imp
:value是列名,其中value是每一行的第三个小值的索引。
A B C fst_imp snd_imp trd_imp
0 1 2 3 A B C
1 6 5 4 C B A
2 7 9 8 A C B
答案 0 :(得分:2)
这是使用numpy.argsort
,pandas.DataFrame
构造函数和DataFrame.join
的一种潜在解决方案:
# Setup
import numpy as np
df = pd.DataFrame({'A': {0: 1, 1: 6, 2: 7}, 'B': {0: 2, 1: 5, 2: 9}, 'C': {0: 3, 1: 4, 2: 8}})
df.join(pd.DataFrame([df.columns.values[x] for x in np.argsort(df.values)],
columns=['fst_imp', 'snd_imp', 'trd_imp']))
[出]
A B C fst_imp snd_imp trd_imp
0 1 2 3 A B C
1 6 5 4 C B A
2 7 9 8 A C B
或者更具扩展性...
df.join(pd.DataFrame([df.columns.values[x] for x in np.argsort(df.values)]))
[出]
A B C 0 1 2
0 1 2 3 A B C
1 6 5 4 C B A
2 7 9 8 A C B