gpt4 book ai didi

python - 排序csv python 2.7

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:52 25 4
gpt4 key购买 nike

我正在尝试对第 3 列上的 csv 文件进行排序。python 对 csv 进行排序,但只对两行进行排序。真的很困惑

这是我正在使用的代码。

import csv
import operator
import numpy

sample = open('data.csv','rU')
csv1 = csv.reader(sample,delimiter=',')
sort=sorted(csv1,key=lambda x:x[3])
for eachline in sort:
print eachline

这是 O/P 从第三行来看,O/P 看起来不错。有什么想法吗?

['6/23/02', 'Julian Jaynes', '618057072', '12.5']
['7/15/98', 'Timothy "The Parser" Campbell', '968411304', '18.99']
['10/4/04', 'Randel Helms', '879755725', '4.5']
['9/30/03', 'Scott Adams', '740721909', '4.95']
['10/4/04', 'Benjamin Radcliff', '804818088', '4.95']
['1/21/85', 'Douglas Adams', '345391802', '5.95']
['12/3/99', 'Richard Friedman', '60630353', '5.95']
['1/12/90', 'Douglas Hofstadter', '465026567', '9.95']
['9/19/01', 'Karen Armstrong', '345384563', '9.95']
['6/23/02', 'David Jones', '198504691', '9.95']
['REVIEW_DATE', 'AUTHOR', 'ISBN', 'DISCOUNTED_PRICE']

最佳答案

您正在对字符串进行排序,需要使用float(x[3])

sort=sorted(csv1,key=lambda x:float(x[3]))

如果您想按第三列排序,则为 x[2],转换为 int:

sort=sorted(csv1,key=lambda x:int(x[2]))

您还需要跳过 header 以避免 ValueError:

csv1 = csv.reader(sample,delimiter=',')
header = next(csv1)
sort=sorted(csv1,key=lambda x:int(x[2]))

Python 将逐个字符地比较字符串,将 "2" 放在 "12" 后面,除非转换为 int:

In [82]: "2" < "12"
Out[82]: False

In [83]: int("2") < int("12")
Out[83]: True

关于python - 排序csv python 2.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30577483/

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