python 将lambda函数与字符串拆分一起使用对索引进行排序

1l5u6lss  于 2022-12-10  发布在  Python
关注(0)|答案(3)|浏览(108)

我有一个这样的数据库

df_crossplot 

the index is 1A22, 10A22,11A22,2A22,21A22
        value
1A22    10
10A22   12
11A22   11
2A22    15
12A22    21
3A22    25

我想做的是根据A前面的数字对索引进行排序,如下所示

value
1A22    10
2A22    15
3A22    25
10A22   12
11A22   11
12A22    21

我做的是这个错误

df_crossplot=df_crossplot.sort_index(key=lambda x: float(x.str.split('A')[0]))

TypeError: float() argument must be a string or a number, not 'list'

看起来lambda函数中x是一个列表而不是一个序列的每个单独的分量,
怎么做?谢谢

unhi4e5o

unhi4e5o1#

在调中使用panda函数

df.sort_index(key=lambda x: x.str.split('A').str[0].astype('int'))
kadbb459

kadbb4592#

为什么不创建一个新列并按它排序呢?:

df['sort_col'] = df.index.str.split('A')[0].astype(int)
vfh0ocws

vfh0ocws3#

如果您想对索引进行排序,natsort可以轻松完成工作

from natsort import natsorted
print(df.reindex(index=natsorted(df.index)))

相关问题