使用pandas 1.1.0+
数据帧看起来像这样-
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进行排序,并且我正在使用的排序索引命令-
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+sort_index
更新现在有了关键参数:
df.sort_index(key=lambda x: x.str.extract('(d+)').squeeze().astype(int))
IIUC,您想对此字符串类型的数据帧索引进行数字排序吗?
尝试:
idx = df.index.str.extract('(d+)').squeeze().astype(int).sort_values().index
df.iloc[idx]