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