更改 Pandas DataFrame 列的顺序

Luqman Khan 2024年2月15日
  1. 使用 reindex() 函数更改 Python Pandas Dataframe 列的顺序
  2. 结论
更改 Pandas DataFrame 列的顺序

Pandas DataFrame 是二维数据结构,以行和列的形式存储信息。

使用 reindex() 函数更改 Python Pandas Dataframe 列的顺序

pandas 中的 reindex() 函数可用于重新排序或重新排列 DataFrame 的列。我们将以所需的顺序创建一个新的列列表,然后使用 data= data[cols] 以这个新顺序重新排列列。

首先,我们需要导入 python 库 numpy 和 pandas。然后声明一个变量 data,我们在其中使用 np.random.rand(10, 5) 函数创建一个 5 列和 10 行的 DataFrame。

此函数创建随机值以使 DataFrame 具有以下 DataFrame:

import pandas as pd
import numpy as np

data = pd.DataFrame(np.random.rand(10, 5))
data

输出:

        0	       1	        2	        3	       4
0	0.277764	0.778528	0.443376	0.838117	0.256161
1	0.986206	0.647985	0.061442	0.703383	0.415676
2	0.963891	0.477693	0.558834	0.616453	0.842086
3	0.746559	0.180196	0.038300	0.391343	0.877589
4	0.554592	0.958017	0.286683	0.526546	0.185318
5	0.370137	0.751773	0.594891	0.570358	0.779640
6	0.795137	0.271263	0.742291	0.615652	0.728313
7	0.912602	0.254319	0.455149	0.241939	0.250034
8	0.125905	0.300788	0.767852	0.265875	0.599287
9	0.400207	0.516693	0.345934	0.691878	0.088651

通过分配,添加另一列:使用以下代码,因此该列计算上面创建的 DataFrame 的 mean 值。

data["mean"] = data.mean(1)
data

输出:

第 6 列均值

上面的输出显示了第 6 列的平均值。我们如何将列均值移到前面,即,使其成为第一列,同时保持其他列的原始顺序?

一种直接的解决方案是使用列列表重新分配 DataFrame,然后可以根据需要对其进行重构。columns.tolist() 函数在列表中列出列的名称。

columns_name = data.columns.tolist()
columns_names

输出:

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

根据需要重新排列 cols。这就是我们如何让最后一个元素到达顶部:

columns = columns_name[-1:] + columns_name[:-1]
columns

输出:

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

上面的输出显示平均列移动到第一个。同样,我们更改索引值以首先更改没有 4 个位置的列。

columns = columns_name[-2:] + columns_name[:-3]
columns

输出:

[4, 'mean', 0, 1, 2]

如你所见,第 4 列移动到第 1 列和第 1 列,这意味着移动到第 2 位置。这就是我们改变列顺序的方式。

现在我们使用 reindex() 函数对 python DataFrame 的列进行重新排序。你还可以使用列名列表并将该列表传递给 reindex() 方法,如下所示。

使用 reindex() 函数重新排序。reindex() 方法将列作为列表接受。

带有列名的单个大括号用于按名称更改列顺序。

column_names = [0, 2, 3, 1, 4, "mean"]
data = data.reindex(columns=column_names)
data

输出:

         0	         2	       3	        1	        4	       mean
0	0.277764	0.443376	0.838117	0.778528	0.256161	0.518789
1	0.986206	0.061442	0.703383	0.647985	0.415676	0.562938
2	0.963891	0.558834	0.616453	0.477693	0.842086	0.691791
3	0.746559	0.038300	0.391343	0.180196	0.877589	0.446797
4	0.554592	0.286683	0.526546	0.958017	0.185318	0.502231
5	0.370137	0.594891	0.570358	0.751773	0.779640	0.613360
6	0.795137	0.742291	0.615652	0.271263	0.728313	0.630531
7	0.912602	0.455149	0.241939	0.254319	0.250034	0.422809
8	0.125905	0.767852	0.265875	0.300788	0.599287	0.411942
9	0.400207	0.345934	0.691878	0.516693	0.088651	0.408673

上面的输出显示你可以通过使用列名索引 DataFrame 并创建新 DataFrame 来重新排列列。

然后按索引名称按索引值使用 reindex()。对索引名称使用双括号。

data = data[[1, 0, 2, 3, 4, "mean"]]
data

输出:

        1	        0	        2	        3	       4	      mean
0	0.778528	0.277764	0.443376	0.838117	0.256161	0.518789
1	0.647985	0.986206	0.061442	0.703383	0.415676	0.562938
2	0.477693	0.963891	0.558834	0.616453	0.842086	0.691791
3	0.180196	0.746559	0.038300	0.391343	0.877589	0.446797
4	0.958017	0.554592	0.286683	0.526546	0.185318	0.502231
5	0.751773	0.370137	0.594891	0.570358	0.779640	0.613360
6	0.271263	0.795137	0.742291	0.615652	0.728313	0.630531
7	0.254319	0.912602	0.455149	0.241939	0.250034	0.422809
8	0.300788	0.125905	0.767852	0.265875	0.599287	0.411942
9	0.516693	0.400207	0.345934	0.691878	0.088651	0.408673

结论

我们已经知道如何使用 reindex() 方法和 DataFrame 索引对 DataFrame 列重新排序,并按字母顺序按升序或降序对列进行排序。

此外,我们还发现了如何将列移动到第一个、最后一个或特定位置。这些操作可以在 pandas DataFrame 中用于执行各种数据操作操作。

相关文章 - Pandas DataFrame