我一直在努力对 df 的整个列进行排序,但是,我的代码似乎仅适用于第一列(“名称”),并根据第一列对其余列进行排序,如下所示:
Index Name Age Education Country
0 W 2 BS C
1 V 1 PhD F
2 R 9 MA A
3 A 8 MA A
4 D 7 PhD B
5 C 4 BS C
df.sort_values(by=['姓名', '年龄', '教育', '国家'],ascending=[True,True, True, True])
这是我希望得到的:
Index Name Age Education Country
0 A 1 BS A
1 C 2 BS A
2 D 4 MA B
3 R 7 MA C
4 V 8 PhD C
5 W 9 PhD F
相反,我得到以下信息:
Index Name Age Education Country
3 A 8 MA A
5 C 4 BS C
4 D 7 PhD B
2 R 9 MA A
1 V 1 PhD F
0 W 2 BS C
您能解释一下这个问题吗?提前谢谢了。 干杯, R。
最佳答案
您的代码按姓名排序,然后是年龄,然后是国家/地区等。
要获得所需的内容,您可以对每列进行排序以按列排序。例如,
for col in df.columns:
df[col]=sorted(df[col])
但是你确定这就是你想要做的吗? DataFrame 的设计使每一行对应一个条目,例如一个人,这些列对应于“姓名”和“年龄”等属性。因此,您不希望将姓名和年龄分开排序,以免人们的姓名和年龄不匹配。
关于python - Pandas 独立对多列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54739798/