Python 熊猫-如何在标签序列保持不变的情况下交换列内容?

Python 熊猫-如何在标签序列保持不变的情况下交换列内容?,python,pandas,Python,Pandas,我使用的是pandas v0.25.3。我没有经验,但有学问。 我有一个dataframe,希望交换两列的内容,保持列标签和序列不变 df = pd.DataFrame ({"A": [(1),(2),(3),(4)], 'B': [(5),(6),(7),(8)], 'C': [(9),(10),(11),(12)]}) 这会产生一个数据帧 A B C 0 1 5 9 1 2

我使用的是pandas v0.25.3。我没有经验,但有学问。 我有一个dataframe,希望交换两列的内容,保持列标签和序列不变

df = pd.DataFrame ({"A": [(1),(2),(3),(4)], 
                    'B': [(5),(6),(7),(8)], 
                    'C': [(9),(10),(11),(12)]})
这会产生一个数据帧


    A   B   C
0   1   5   9
1   2   6   10
2   3   7   11
3   4   8   12

我想交换列内容B和C以获得

    A   B   C
0   1   9   5
1   2   10  6
2   3   11  7
3   4   12  8
我试着查看pd.DataFrame.values,它将我发送到numpy数组和高级切片,但我迷路了。
最简单的方法是什么?

您可以分配numpy数组:

#pandas 0.24+
df[['B','C']] = df[['C','B']].to_numpy()
#oldier pandas versions
df[['B','C']] = df[['C','B']].values
或使用:



您可以指定numpy数组:

#pandas 0.24+
df[['B','C']] = df[['C','B']].to_numpy()
#oldier pandas versions
df[['B','C']] = df[['C','B']].values
或使用:



您还可以交换标签:

df.columns = ['A','C','B']
如果您的数据帧非常大,我相信这比复制所有数据需要的计算机更少

如果列的顺序很重要,则可以对其重新排序:

df = df.reindex(['A','B','C'], axis=1)

您还可以交换标签:

df.columns = ['A','C','B']
如果您的数据帧非常大,我相信这比复制所有数据需要的计算机更少

如果列的顺序很重要,则可以对其重新排序:

df = df.reindex(['A','B','C'], axis=1)
或者直接使用:

df['B'], df['C'] = df['C'], df['B'].copy()
print(df)
输出:

   A   B  C
0  1   9  5
1  2  10  6
2  3  11  7
3  4  12  8
或者直接使用:

df['B'], df['C'] = df['C'], df['B'].copy()
print(df)
输出:

   A   B  C
0  1   9  5
1  2  10  6
2  3  11  7
3  4  12  8