更改DataFrame列順序


使用pandas進行數據分析的時候,有時會由於各種需求添加了一些列。可是列的順序並不能符合自己的期望。這個時候就需要對於列的順序進行調整。

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(3, 5))
df["mean"]=df.mean()
print(df)

顯示的數據內容為:

          0         1         2         3         4      mean
0  0.320500  0.200182  0.910904  0.037071  0.596277  0.405417
1  0.212709  0.285527  0.329076  0.129344  0.126926  0.403962
2  0.683041  0.726176  0.030683  0.259034  0.883049  0.423555

其實想調整為:(將最后一列,放到第一列)

       mean         0         1         2         3         4
0  0.463490  0.360264  0.687535  0.541793  0.453763  0.262976
1  0.615846  0.795119  0.570023  0.293943  0.113567  0.697966
2  0.548002  0.235088  0.589980  0.808269  0.787805  0.683487

 

調整列順序的代碼為:

cols = df.columns.tolist()
# 更改列順序方法1:
# cols = cols[-1:] + cols[:-1]
# 更改列順序方法2: 這種可以指定位置進行插入,指定位置刪除。其實就是list順序調整方式
cols.insert(0, cols.pop(-1))
df = df[cols] #or df = df.reindex(columns=cols) #有的帖子中說也可以使用 df = df.ix[:, cols],其實這個方法已經廢棄了
print(df)

如果使用df = df.ix[:, cols]更改列順序,會收到報錯信息。內容為:AttributeError: 'DataFrame' object has no attribute 'ix' 。

 

當然解決問題的方式會有多重多樣,比如:

# 方法1:
df = df[['mean'] + [col for col in df.columns if col != 'mean']]
print(df)
#方法2:
col = df.pop("mean")
df.insert(0, col.name, col)
print(df)
#方法3:
df.set_index(df.columns[-1], inplace=True)
df.reset_index(inplace=True)
print(df)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM