我有一个 Dataframe ,其中的列名是时间(0:00,0:10,0:20,...,23:50)。现在,它们按照字符串顺序排序(0:00是第一个,9:50是最后一个),但我想按照时间排序(0:00是第一个,23:50是最后一个)。
如果 * time * 是列,则可以使用
df = df.sort(columns='Time',key=float)
但是1)只有当 * time * 是列本身而不是列名时,它才起作用,2)sort()已被弃用,所以我尽量避免使用它。
我想用
df = df.sort_index(axis = 1)
但是因为列名是字符串格式的,所以它们根据字符串键排序。
df = df.sort_index(key=float, axis=1)
但这会给出一个错误消息:
Traceback (most recent call last):
File "<ipython-input-112-5663f277da66>", line 1, in <module>
df.sort_index(key=float, axis=1)
TypeError: sort_index() got an unexpected keyword argument 'key'
有人知道如何解决这个问题吗?sort_index()--和sort_values()--没有key参数真是太烦人了!!
5条答案
按热度按时间6xfqseft1#
尝试使用
sorted
内置函数对列进行排序,并将输出传递到 Dataframe 以进行索引。希望这能帮上忙
aoyhnmkz2#
只需在一位数的小时数前面加上一个前导零。这应该是最简单的解决方案,因为你可以简单地按词法排序。
例如5:30 -〉05:30。
mctunoxg3#
下面是一个工作演示,它实现了@MartinKrämer的想法:
puruo6ea4#
我知道这个问题已经有几年的历史了,但是由于它是这个问题的最佳Google结果,我想提供错误的根本原因。
在1.1.0版中,“key”参数被添加到sort_values中。请参阅下面链接的文档中的注解。
pandas.DataFrame.sort_values
如果您升级到1.1.0或更高版本,此功能将非常像您预期的那样工作。
mpgws1up5#
带密钥的
sort_values()
似乎不起作用,但是带密钥的sort_index()
可以起作用。参考Abdou enter image description here