【发布时间】:2018-02-05 16:16:37
【问题描述】:
我经常需要处理行名(pandas 中的索引)类似于 [a-z][0-9]+ 类型的数据框(例如 'a20','a21',... 或 'b1','b11','b2 ',...)
我希望能够仅根据数字对行进行排序。从我可以收集到的 API 中,df.sort_index() 没有使用我可以定义排序函数的函数参数。
有没有一种简洁的方法可以在创建数据框时不移除初始字符来实现这一点?
【问题讨论】:
-
或许你可以使用reindex。
-
我认为目前最好的方法是从索引中构造一列,删除字母前缀,然后按此排序。
-
我觉得最好的理论方法是拥有一个字符串列和一个整数列的多索引,然后您可以使用标准的 pandas 排序和功能。但是,当前的答案之一很可能是一个更好的实用答案,因为多索引会带来更多的复杂性。
-
我同意@HaleemurAli,但前提是索引的数字部分是唯一标识符。 IE。您想如何处理 A25 和 B25(如果可能的话)。