一、需求
例如有一个数据框列名分别为:a、b、c、d,要求转换为:d、c、b、a。
二、实操
- 建立测试数据集
# 建立测试数据集
df = pd.DataFrame({'a':range(5),
'b':np.random.randn(5),
'c':np.random.randn(5),
'd':np.random.randn(5)
})
df
'''
a b c d
0 0 -1.470 -2.294 -0.012
1 1 0.709 1.100 -0.299
2 2 0.325 0.918 0.105
3 3 -0.679 0.822 1.488
4 4 1.120 -0.525 0.231
'''
- 提取列名
# 提取列名
df_columns = df.columns.to_list() # ['a', 'b', 'c', 'd']
1.方法一
# 方法一:利用pop再insert
for i in range(df.shape[1]):
# print(i)
a = df_columns.pop(-1)
b = df.pop(a)
df.insert(i, a, b)
df
'''
d c b a
0 -0.012 -2.294 -1.470 0
1 -0.299 1.100 0.709 1
2 0.105 0.918 0.325 2
3 1.488 0.822 -0.679 3
4 0.231 -0.525 1.120 4
'''
2.方法二
# 方法二:直接反转、重新生成一个新的df
df_columns = df.columns.to_list()
df_columns.reverse()
df[df_columns]
'''
d c b a
0 0.869 0.087 -1.149 0
1 1.757 -1.277 -1.347 1
2 -0.640 0.418 0.619 2
3 -0.433 -1.526 -1.861 3
4 -1.415 2.196 0.451 4
'''