你好,我想按列中的值对数据框进行排序。 列的值是带有数字的字符串组合。我想按值中的数字进行排序,但要先将其拆分开来。 因此,我搜索了一些模块,以从列表中仅选择数字并在sort_values中应用kind选项.. 但是它不起作用.. 没有kind选项,它会按'D1 D10 D11 D2 D3..'排序。 我希望能排序'D1 D2 D3 D4 .. D10 D11' 你可以帮我吗?
python
# 我想按D1 D2 D3 D4 D5 D10 D11排序...
df[Xlabel] = ['D1','D2','D3','D4','D5','D10','D11']
def atoi(text):
return int(text) if text.isdigit() else text
def natural_keys(text):
return [ atoi(c) for c in re.split('(\d+)',text) ]
# my trying but didn't work with error message like below..
df.sort_values(by=[Xlabel], inplace=True, kind=natural_keys[list(df[Xlabel])])
# my trying working well but it didn't sort well
# It sort by ( D1 D10 D11 D2 D3... ) it's not my hope
df.sort_values(by=[Xlabel], inplace=True])
#error message when trying my method
df.sort_values(by=[Xlabel], inplace=True, kind=natural_keys[list(df[Xlabel])])
TypeError: 'function' object is not subscriptable