如何以pandastic方式更改列顺序(排序)?

时间:2018-04-26 10:37:18

标签: python pandas sorting dataframe

我有一个带有标题的数据框,它是'string-integers'的列表:

import pandas as pd

d = {'1': [1, 2], '7': [3, 4], '3': [3, 4], '5': [2, 7]}
df = pd.DataFrame(data=d)

   1  3  5  7
0  1  3  2  3
1  2  4  7  4

此列的代码更改顺序(sort):

cols = df.columns.tolist()
cols = [int(x) for x in cols]
cols.sort()
cols = [str(x) for x in cols]
df = df[cols]

   1  3  5  7
0  1  3  2  3
1  2  4  7  4

我对这个解决方案不满意。当然,我可以在函数中隐藏它,但可能存在更优雅的方法。

1 个答案:

答案 0 :(得分:1)

根据您的需要,有几种选择。

选项1

您可以使用sort_values排序为字符串:

df.columns = df.columns.sort_values()

注意这意味着“10”将在“2”之前出现

选项2

如果您希望转换为整数然后排序:

df.columns = df.columns.astype(int).sort_values()

选项3

如果你想保持字符串,但按整数值排序:

df.columns = df.columns.astype(int).sort_values().astype(str)

纯Python方法也是可能的:

df.columns = sorted(df, key=int)