gpt4 book ai didi

python - 带连字符的数字或带连字符的数字字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:54 25 4
gpt4 key购买 nike

我需要制作一个 pandas DataFrame,其中有一列用带连字符的数字填充。我能想到的唯一方法是使用字符串。这一切都很好,直到我需要对它们进行排序以使它们在重新组合后恢复正常。问题是字符串排序如下:

['100-200','1000-1100','1100-1200','200-300']

这显然不是我想要的排序方式。我希望它按编号排序。我怎样才能让它发挥作用?我愿意改变任何事。最好将带连字符的字符串保留为整数或 float ,但我不确定该怎么做。

最佳答案

你可以尝试这样的事情:

>>> t = ['100-200','1000-1100','1100-1200','200-300']
>>> t.sort(key=lambda x: [int(y) for y in x.split('-')])
>>> t
['100-200', '200-300', '1000-1100', '1100-1200']

这将允许您对整数进行排序,如果存在连字符,它将首先按键列表中的第一个整数排序,然后按第二个整数排序。如果不存在连字符,您将仅对字符串的整数等价物进行排序:

>>> t = ['100-200','1000-1100','1100-1200','200-300', '100']
>>> t.sort(key=lambda x: [int(y) for y in x.split('-')])
>>> t
['100', '100-200', '200-300', '1000-1100', '1100-1200']

如果您在任何字符串中有任何 float 等价物,只需将 int 更改为 float,如下所示:

>>> t = ['100-200.3','1000.5-1100','1100.76-1200','200-300.75', '100.35']
>>> t.sort(key=lambda x: [float(y) for y in x.split('-')])
>>> t
['100-200.3', '100.35', '200-300.75', '1000.5-1100', '1100.76-1200']

关于python - 带连字符的数字或带连字符的数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20862968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com