如何根据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