将基于字符串列的CSV文件排序为整数比较

时间:2014-11-19 19:06:41

标签: python sorting csv

我想用第一列对CSV文件进行排序。第一列中包含字符串,但值为数字。所以我想把它整理成一个整数。我知道我可以使用以下内容进行排序 -

sortedList = sorted(mycsv, key=lambda t: float(t[0]))

但这会产生以下错误 -

ValueError: invalid literal for float(): 14,481.72

我读了几个像this这样的SO问题,发现解决这个错误的方法就是这样做 -

float(value.replace(',',''))

但是我不知道在使用lambda函数进行排序时如何做到这一点。我不知道怎么把这个逻辑放到第一行代码中。

1 个答案:

答案 0 :(得分:0)

只需在lambda中替换,您希望按t[0]排序第一个元素,这样您就需要将该元素转换为float中的lambda

float(t[0].replace(",",""))

sorted(mycsv, key=lambda t: float(t[0].replace(",","")))

In [12]: l = ["5,543.23","14,481.72","10,1000.34","8,581.72"]

In [13]:  sorted(l, key=lambda t: float(t.replace(",","")))
Out[13]: ['5,543.23', '8,581.72', '14,481.72', '10,1000.34']
相关问题