![](/img/trans.png)
[英]How to sort column names with different characters(., !, @, $, (, &) in a dataframe with python
[英]Sort List of File Names with Different Amount of Characters
我遇到了一个问题,我需要格式为 xxx_00000、xxx_00001 的文件的排序列表。 问题是当文件超过 100000 个时,格式变为 xxx_100000,而所有其他文件保持不变。 这意味着当我执行 os.listdir(directory) 时,我会在 xxx_100000 旁边得到 xxx_10000(即 xxx_10000 是索引 10,000,xxx_100000 是索引 10,001)。 关于如何排序以使它们以正确的顺序显示的任何想法? 我试过了:
sorted(paths)
sorted(paths, key=lambda x: x[x.rfind('_')+1:-4])
和
def sorted_helper(x):
x = str(00000) + x[x.rfind('_')+1:-4]
return x[-7:]
sorted(paths, key=sorted_helper)
您可能希望将其排序为 int,而不是字符串。 尝试:
sorted(paths, key=lambda filename: int(filename.split("_")[1]))
您可以使用natsort.natsorted
:
from natsort import natsorted
natsorted(paths)
natsort
库在这种情况下会很有帮助。
例如:
from natsort import natsorted
natsorted(paths)
输出:
['xxx_00001',
'xxx_00002',
'xxx_00100',
'xxx_01000',
'xxx_10000',
'xxx_100001',
'xxx_100010',
'xxx_110000']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.