最近更新到pandas 0.17.0,我尝试按字母顺序排序数据框中的列。
以下是目前的列标签:
['UX2', 'RHO1', 'RHO3', 'RHO2', 'RHO4', 'UX1', 'UX4', 'UX3']
我希望他们这样:
['RHO1', 'RHO2', 'RHO3', 'RHO4', 'UX1', 'UX2', 'UX3', 'UX4']
我能够做到这一点的唯一方法是从3年前开始:How to change the order of DataFrame columns?
在0.17.0中有内置的方法吗?
答案 0 :(得分:3)
要在此按字母顺序对列进行排序,您只需使用sort_index
:
df.sort_index(axis=1)
该方法返回一个重新编制索引的DataFrame,其中列的顺序正确。
这假设所有列标签都是字符串(它不适用于混合使用,例如字符串和整数)。如果此不是的情况,您可能需要将显式排序传递给reindex
方法。
答案 1 :(得分:1)
你可以对它们进行排序并将它们放回去。假设你有这个:
df = pd.DataFrame()
for i, n in enumerate(['UX2', 'RHO1', 'RHO3', 'RHO2', 'RHO4', 'UX1', 'UX4', 'UX3']):
df[n] = [i]
看起来像这样:
df
UX2 RHO1 RHO3 RHO2 RHO4 UX1 UX4 UX3
0 0 1 2 3 4 5 6 7
这样做:
df = df[ sorted(df.columns)]
你应该看到这个:
df
RHO1 RHO2 RHO3 RHO4 UX1 UX2 UX3 UX4
0 1 3 2 4 5 0 7 6
答案 2 :(得分:1)
按照您想要的顺序创建列标签列表。
cols = ['RHO1', 'RHO2', 'RHO3', 'RHO4', 'UX1', 'UX2', 'UX3', 'UX4']
然后将此订单分配给您的DataFrame df:
df = df[cols]