如何根据pandas中的多个列获取列名? 目标:

如何根据pandas中的多个列获取列名? 目标:,pandas,Pandas,创建列 fst\u imp:返回列名,其中的值是每行最小值的索引 snd_imp:值是列名,其中的值是每行第二个小值的索引 trd_imp:值是列名,其中值是每行第三个小值的索引 示例结果: 以下是一个潜在的解决方案,使用构造函数和: [外] 或者更具伸缩性 df.join(pd.DataFrame([df.columns.values[x] for x in np.argsort(df.values)])) [外] 以下是一个潜在的解决方案,使用构造函数和: [外] 或者更具伸缩性 df.j

创建列

fst\u imp
:返回列名,其中的值是每行最小值的索引

snd_imp
:值是列名,其中的值是每行第二个小值的索引

trd_imp
:值是列名,其中值是每行第三个小值的索引

示例结果:
以下是一个潜在的解决方案,使用构造函数和:

[外]

或者更具伸缩性

df.join(pd.DataFrame([df.columns.values[x] for x in np.argsort(df.values)]))
[外]


以下是一个潜在的解决方案,使用构造函数和:

[外]

或者更具伸缩性

df.join(pd.DataFrame([df.columns.values[x] for x in np.argsort(df.values)]))
[外]


但是如果我有超过3列,它将得到AssertionError:3列传递,传递的数据有N列删除
columns=[…]
arg在这种情况下,应该可以正常工作,您可能只需要用不同的方式重命名那些列headingspd.DataFrame([df.columns.values[x][:3]在np.argsort(df.values)],列中的x=['fst_imp','snd_imp','trd_imp'])它可以工作,但如果我有3列以上,它将得到断言错误:传递了3列,传递的数据有N列删除
columns=[…]
arg在这种情况下,应该可以工作了,您可能只需要用另一种方式重命名这些列headingspd.DataFrame([df.columns.values[x][:3]在np.argsort中为x)(df.values)],列=['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