Python 熊猫-如何在标签序列保持不变的情况下交换列内容?
我使用的是pandas v0.25.3。我没有经验,但有学问。 我有一个dataframe,希望交换两列的内容,保持列标签和序列不变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
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