对这个数据集的索引进行排序吗?

我正在尝试对此数据集进行排序:

     A  
1    x
101  y
104  a
11   b
111  z
119  c
13   d
131  w

我已将sort_index()函数应用到名为X_train的数据框中,如下所示:

X_train.sort_index()

但是,我希望对索引进行如下排序:

     A  
1    x
11   b
13   d
101  y
104  a
111  z
119  c
131  w

使用pandas中的任何函数或任何Pythonic库是否有可能?

liupan7891 回答:对这个数据集的索引进行排序吗?

实际上您要对DataFrame进行排序:

  • 首先在键的长度上(作为字符串)
  • 然后使用其

要执行此操作,可以使用以下代码:

df['ind'] = df.index.astype('str')
df['len'] = df.ind.str.len()
df = df.sort_values(['len','ind']).drop(columns=['len','ind'])

另一个更简洁的解决方案是:

df.iloc[np.argsort(df.index.map(lambda it: (len(str(it)),it)))]

想法是:

  • 为每个索引值(lambda函数)计算一个元组“长度,值”。
  • 执行 argsort -您将获得按这些元组排序的行的位置。
  • 从这些位置检索元素。
,

两种类型:

X_train = X_train.sort_index()

或:

X_train.sort_index(inplace=True)
本文链接:https://www.f2er.com/3155129.html

大家都在问