Python 尝试对周数为w1、w2等的索引进行排序,它';它不工作了?
数据帧看起来像这样-Python 尝试对周数为w1、w2等的索引进行排序,它';它不工作了?,python,pandas,Python,Pandas,数据帧看起来像这样- User1 User2 User3 User4 w1 0 0 0 0 w10 0 0 0 0 w11
User1 User2 User3 User4
w1 0 0 0 0
w10 0 0 0 0
w11 0 0 0 0
w12 0 0 0 0
w13 0 0 1 1
w14 0 0 0 0
w15 0 1 0 0
w16 0 0 0 0
w17 0 0 0 0
w18 0 0 0 0
w19 0 0 0 0
w2 0 0 0 0
w20 0 0 0 0
w21 0 0 0 0
w22 0 0 0 0
w23 0 0 0 0
w24 0 0 0 0
w25 0 0 0 0
w26 0 0 0 0
w27 0 0 0 0
w28 0 0 0 0
w29 0 0 0 0
w3 0 0 0 0
w30 0 0 0 0
w31 0 0 0 0
w32 0 0 0 0
w33 0 0 0 0
w34 0 0 0 0
w35 0 0 0 0
w36 0 0 0 0
w37 0 0 0 0
w38 0 0 0 0
w39 0 0 0 0
w4 0 0 0 0
w40 1 0 0 0
w41 0 0 0 0
w42 0 0 0 0
w43 0 0 0 0
w44 0 0 0 0
w45 0 0 0 0
w46 0 0 0 0
w47 0 0 0 0
w48 0 0 0 0
w49 0 0 0 0
w5 0 0 0 0
w50 0 0 0 0
w51 0 0 0 0
w52 0 0 0 0
w53 0 0 0 0
w54 0 0 0 0
w55 0 0 0 0
w56 0 0 0 0
w6 0 0 0 0
w7 0 0 0 0
w8 0 0 0 0
现在,我尝试按索引对df进行排序,并使用sort index命令-
df.sort_index(inplace=True,axis=0)
它不起作用了吗?知道为什么会这样吗?我甚至尝试添加Ascending=True作为参数,但仍然不起作用
所需的输出将是按周排序的整个数据帧-
w1
w2
w3
依此类推。让我们试试
natsort
:请注意,您应该先安装此工具箱
from natsort import index_natsorted
df=df.iloc[index_natsorted(df.index)]
使用pandas 1.1.0+进行更新现在具有关键参数:
IIUC,你想对这个字符串类型的数据帧索引进行数字排序吗 尝试:
尝试
df.sort\u index(axis=0,inplace=True)
您想要的输出是什么?@bigbounty尝试过,但不起作用。为了更好地说明问题,我做了一些编辑,请检查它们
df.sort_index(key=lambda x: x.str.extract('(\d+)').squeeze().astype(int))
idx = df.index.str.extract('(\d+)').squeeze().astype(int).sort_values().index
df.iloc[idx]