Python 如何在Pandas中将A1、A10、A11、…、A2等行顺序更改为A1、A2、…、A10、A11

Python 如何在Pandas中将A1、A10、A11、…、A2等行顺序更改为A1、A2、…、A10、A11,python,pandas,Python,Pandas,当我从指定文件夹导入数据文件时,Pandas dataframe会自动对行顺序进行排序,如A1、A10、A11、…、A2,但我想将其设置为A1、A2、…、A10、A11,因此A2位于A10、A11之前 您知道如何更改行顺序吗?所有列的行顺序不应仅更改包含A1、A10、A11、…、A2的特定列。因此,例如,“ID”列和“Identifier”列的行顺序应该根据“Loc”列而改变。 此外,实际数据更长,直到Z为止的字母更多 示例代码为: data = {'ID':['S1', 'S1', 'S1'

当我从指定文件夹导入数据文件时,Pandas dataframe会自动对行顺序进行排序,如A1、A10、A11、…、A2,但我想将其设置为A1、A2、…、A10、A11,因此A2位于A10、A11之前

您知道如何更改行顺序吗?所有列的行顺序不应仅更改包含A1、A10、A11、…、A2的特定列。因此,例如,“ID”列和“Identifier”列的行顺序应该根据“Loc”列而改变。 此外,实际数据更长,直到Z为止的字母更多

示例代码为:

data = {'ID':['S1', 'S1', 'S1' ,'S1'  ,'S2' ,'S3' ,'S3', 'S4', 'Negative', 'Positive', 'Negative',
             'S1', 'S1' ,'S2' ,'S2' ,'S2' ,'S3' ,'S4', 'S4', 'Positive', 'Positive', 'Negative'], 
   'Loc':['A1', 'A10', 'A11' ,'A2' ,'A3' ,'A4' ,'A5', 'A6', 'A7', 'A8', 'A9',
               'B1', 'B10', 'B11' ,'B2' ,'B3' ,'B4' ,'B5' ,'B6', 'B7', 'B8', 'B9'],
   'Identifier' :['asd01', 'asd02', 'asd04', 'asd05', 'asd06', 'asd07', 'asd08', 'asd09'
             ,'asd10' ,'asd11' ,'asd13' ,'asd14' ,'asd15', 'asd16', 'asd17', 'asd18',
             'asd19', 'asd20', 'asd21', 'asd22', 'asd23', 'asd24']}

感谢您的帮助:)

我认为可能有更好的方法来做到这一点,但这可以作为目前的解决办法; 将要排序的列除以Char和Int,然后按值排序:

df['letter'] = df.Loc.apply(lambda x: x[0])
df['number'] = df.Loc.apply(lambda x: int(x[1:]))
df = df.sort_values(by=['letter', 'number'])
然后可以删除创建的列。
请注意,如果您的“Loc”有多个字符的实例,则需要使用其他方法将字母与数字分开,可能是正则表达式。

这是否回答了您的问题?