我想用第一列对CSV文件进行排序。第一列中包含字符串,但值为数字。所以我想把它整理成一个整数。我知道我可以使用以下内容进行排序 -
sortedList = sorted(mycsv, key=lambda t: float(t[0]))
但这会产生以下错误 -
ValueError: invalid literal for float(): 14,481.72
我读了几个像this这样的SO问题,发现解决这个错误的方法就是这样做 -
float(value.replace(',',''))
但是我不知道在使用lambda函数进行排序时如何做到这一点。我不知道怎么把这个逻辑放到第一行代码中。
答案 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']