如何用Pandas更改行或列顺序?如何交换奇偶行或列顺序?

所有需要数据可以从该网址下载:https://github.com/datawhalechina/joyful-pandas

列或行顺序修改

方法一、reindex法更改行或列(定义一个列表,直接对index排序实现行顺序更改,对column排序进行列更改)但这种方法,只适合较少行列顺序的改变,否则枚举起来太复杂。优点是,该方法不会直接操作原df。

df = pd.read_csv('data/table.csv',index_col='ID')
df.head()
# 行排序
dfNewRow = df.reindex(index=[1101,1203,1206,2402])
dfNewRow
dfNewCol = df.reindex(columns=['Height','Gender']).head()
dfNewCol 

如何用Pandas更改行或列顺序?如何交换奇偶行或列顺序?_第1张图片
如何用Pandas更改行或列顺序?如何交换奇偶行或列顺序?_第2张图片

奇偶行列顺序修改

df = pd.read_csv('data/table.csv',index_col='ID')
df.head()
#df.loc[np.c_[df.index[1::2].tolist(),df.index[0::2].tolist()].reshape(-1)]  #奇偶行数相等
df.loc[np.c_[df.index[1::2].tolist(),df.index[0:-1:2].tolist()].reshape(-1)]  #奇偶行数不相等

该方法中,df.index[1::2].tolist()表示从索引1开始,每隔2行取出索引,即奇数行;再用np.c_将就是把两矩阵左右相加,要求行数相等。(关于np.c_,np.r_的用法可以参考:https://blog.csdn.net/weixin_41797117/article/details/80048688)
由此,可以实现df中奇数行互换。
如何用Pandas更改行或列顺序?如何交换奇偶行或列顺序?_第3张图片

dfOddEvenCha = df[np.r_[df.columns[1::2].tolist(),
             df.columns[0::2].tolist()].reshape(-1,)] #奇偶列数相等
#dfOddEvenCha = df[np.r_[df.columns[1::2].tolist(),
#             df.columns[0:-1:2].tolist()].reshape(-1,)] #奇偶列数不相等
dfOddEvenCha.head()

如何用Pandas更改行或列顺序?如何交换奇偶行或列顺序?_第4张图片

你可能感兴趣的:(Pandas学习,python,数据挖掘)