Python/Pandas:基于列名对数据帧列进行排序

Python/Pandas:基于列名对数据帧列进行排序,python,pandas,Python,Pandas,我有一个数据框,其中包含几个列,标记为x1、x2、x3和x4 根据分析的不同,在从左到右对数据帧中的四列进行排序时,我需要将四列中的一列指定为第一列 例如,如果我希望列“x2”是第一个,我将其分配给“sorter” sorter = x2 现在我的问题是:如何对列中的数据帧进行排序,以便分配给“sorter”的列位于第一列中 编辑:其余列的顺序应保持不变。您可以更改列的顺序,如: data = {'X1': ['11', '12'], 'X2': ['21', '22'],

我有一个数据框,其中包含几个列,标记为x1、x2、x3和x4

根据分析的不同,在从左到右对数据帧中的四列进行排序时,我需要将四列中的一列指定为第一列

例如,如果我希望列“x2”是第一个,我将其分配给“sorter”

sorter = x2 
现在我的问题是:如何对列中的数据帧进行排序,以便分配给“sorter”的列位于第一列中


编辑:其余列的顺序应保持不变。

您可以更改列的顺序,如:

data = {'X1':  ['11', '12'],
        'X2': ['21', '22'],
        'X3': ['31', '32']
        }

df = pd.DataFrame(data)
df
    X1  X2  X3
0   11  21  31
1   12  22  32

df = df.reindex(['X3','X1','X2'], axis=1)
df

    X3  X1  X2
0   31  11  21
1   32  12  22

注意:您需要提供所需的订单

您可以创建一个函数,按给定列更改订单:

def sorter(desired, df):
    columns = df.columns.tolist()
    columns.remove(desired)
    columns.insert(0,desired)
    return df.reindex(columns, axis=1)

sorter('X2',df)

    X2  X1  X3
0   21  11  31
1   22  12  32


您可以更改列的顺序,如:

data = {'X1':  ['11', '12'],
        'X2': ['21', '22'],
        'X3': ['31', '32']
        }

df = pd.DataFrame(data)
df
    X1  X2  X3
0   11  21  31
1   12  22  32

df = df.reindex(['X3','X1','X2'], axis=1)
df

    X3  X1  X2
0   31  11  21
1   32  12  22

注意:您需要提供所需的订单

您可以创建一个函数,按给定列更改订单:

def sorter(desired, df):
    columns = df.columns.tolist()
    columns.remove(desired)
    columns.insert(0,desired)
    return df.reindex(columns, axis=1)

sorter('X2',df)

    X2  X1  X3
0   21  11  31
1   22  12  32


这不是你想要使用的功能吗?其他列的顺序是什么?对df.sort_值(['x2'、'x1'、'x3'、'x4'])进行排序没有关系吗??如果不指定其他列,您可以使用它来交换数据帧的列,它不会对它们进行排序。我不确定它是否使用了稳定的排序算法,因此其余列中的顺序可能是随机的。您不想使用这个函数吗?其他列的顺序是什么?对df.sort_值(['x2'、'x1'、'x3'、'x4'])进行排序没有关系吗??如果不指定其他列,您可以使用它来交换数据帧的列,它不会对它们进行排序。我不确定它是否使用了稳定的排序算法,因此其他列中的顺序可能是随机的。谢谢。有没有一种方法可以将我想要作为“第一列”的列分配给一个变量(就像在我的帖子中),并保持其余列的顺序不变?希望sorter函数能有所帮助。它更改了给定的第一列,并保持其余列不变。谢谢。有没有一种方法可以将我想要作为“第一列”的列分配给一个变量(就像在我的帖子中),并保持其余列的顺序不变?希望sorter函数能有所帮助。它会更改给定的第一列,并保持其余列不变。