Pandas 数据框中列的顺序问题
在本文中,我们将介绍如何使用 Pandas 包调整数据框中列的顺序。
在进行数据分析中,我们经常需要更改数据框中列的顺序。例如,我们需要将一些列移动到前面以更容易查看,或者按照一定的顺序排列列。下面我们将介绍不同情况下如何调整列的顺序。
阅读更多:Pandas 教程
按照指定顺序排列列
如果我们需要按照指定的顺序排列列,我们可以使用 Pandas 的 reindex
方法。例如,我们有如下数据框:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
print(df)
# Output:
# A B C
# 0 1 4 7
# 1 2 5 8
# 2 3 6 9
如果我们需要按照 C -> A -> B
的顺序排列列,我们可以使用以下代码:
df = df.reindex(columns=['C', 'A', 'B'])
print(df)
# Output:
# C A B
# 0 7 1 4
# 1 8 2 5
# 2 9 3 6
我们可以看到数据框中列的顺序是按照指定的顺序排列的。
移动某一列到最前面
如果我们需要移动某一列到最前面,我们可以使用以下代码:
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
df = df[['C', 'A', 'B']]
print(df)
# Output:
# C A B
# 0 7 1 4
# 1 8 2 5
# 2 9 3 6
我们可以看到,通过从原始数据框中选择列构建一个新的数据框,我们可以将某一列移动到最前面。
移动某一列到最后面
如果我们需要移动某一列到最后面,我们可以使用以下代码:
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
df = df[['A', 'B', 'C']]
print(df)
# Output:
# A B C
# 0 1 4 7
# 1 2 5 8
# 2 3 6 9
我们可以看到,通过从原始数据框中选择列构建一个新的数据框,我们可以将某一列移动到最后面。
自定义移动某一列的位置
如果我们需要将某一列移到指定的位置,不是最前面也不是最后面,我们可以使用以下代码:
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
cols = df.columns.tolist()
cols.insert(1, cols.pop(cols.index('C')))
df = df.reindex(columns=cols)
print(df)
# Output:
# A C B
# 0 1 7 4
# 1 2 8 5
# 2 3 9 6
我们可以看到,使用 cols.pop(cols.index('C'))
可以将列 C
移除列名列表 cols
(这里的 cols
是把数据框的列名转化成列表形式)中,并返回该元素的值。然后,使用 cols.insert(1, ...)
将该元素插入到指定位置。最后,通过 df.reindex(columns=cols)
将新的列名列表重新赋值给数据框。
总结
本文介绍了 Pandas 包中如何调整数据框中列的顺序。我们可以使用 reindex
方法按照指定顺序排序列、使用从原始数据框中选择列构建一个新的数据框将某一列移动到最前面或最后面、使用 cols.pop(cols.index('...'))
将列移除列名列表中并返回该元素的值、使用 cols.insert()
将元素插入到指定位置。