Python Pandas中DataFrame列顺序的更改方法

Python Pandas中DataFrame列顺序的更改方法

技术背景

在使用Python的Pandas库进行数据分析时,DataFrame是一种常用的数据结构。有时候,我们需要根据特定的需求改变DataFrame列的顺序,例如将某一列移动到最前面,或者按照自定义的顺序重新排列列。

实现步骤

1. 创建示例DataFrame

1
2
3
4
5
import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(10, 5))
df['mean'] = df.mean(1)

2. 方法一:重新分配列名列表

1
2
3
cols = df.columns.tolist()
cols = cols[-1:] + cols[:-1]
df = df[cols]

3. 方法二:手动指定列名顺序

1
df = df[['mean', 0, 1, 2, 3, 4]]

4. 方法三:使用insertpop方法(适用于Pandas >= 1.3)

1
df.insert(0, 'mean', df.pop('mean'))

5. 方法四:使用reindex方法

1
df = df.reindex(columns=['mean', 0, 1, 2, 3, 4])

核心代码

以下是几种常见方法的代码汇总:

方法一:重新分配列名列表

1
2
3
4
5
6
7
8
9
10
import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(10, 5))
df['mean'] = df.mean(1)

cols = df.columns.tolist()
cols = cols[-1:] + cols[:-1]
df = df[cols]
print(df)

方法二:手动指定列名顺序

1
2
3
4
5
6
7
8
import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(10, 5))
df['mean'] = df.mean(1)

df = df[['mean', 0, 1, 2, 3, 4]]
print(df)

方法三:使用insertpop方法

1
2
3
4
5
6
7
8
import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(10, 5))
df['mean'] = df.mean(1)

df.insert(0, 'mean', df.pop('mean'))
print(df)

方法四:使用reindex方法

1
2
3
4
5
6
7
8
import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(10, 5))
df['mean'] = df.mean(1)

df = df.reindex(columns=['mean', 0, 1, 2, 3, 4])
print(df)

最佳实践

  • 少量列的情况:如果DataFrame的列数较少,可以使用手动指定列名顺序的方法,这种方法简单直接。
  • 大量列的情况:如果列数较多,重新分配列名列表或者使用insertpop方法会更加方便,避免手动输入大量列名。
  • 考虑性能:某些方法可能会复制所有数据,导致性能较低。在处理大规模数据时,需要考虑性能问题。

常见问题

  • reindex_axis已被弃用:在较新的Pandas版本中,reindex_axis已被弃用,建议使用reindex方法代替。
  • 列名重复问题:如果尝试插入已经存在的列,可能会引发错误。可以使用pop方法先移除该列,再进行插入操作。
  • 性能问题:某些方法可能会复制所有数据,导致性能较低。在处理大规模数据时,需要选择合适的方法。

Python Pandas中DataFrame列顺序的更改方法
https://119291.xyz/posts/2025-04-18.python-pandas-dataframe-column-order-change/
作者
ww
发布于
2025年4月18日
许可协议