【问题标题】:Sorting a csv file in Python在 Python 中对 csv 文件进行排序
【发布时间】:2015-06-14 05:56:55
【问题描述】:

我正在尝试按特定列对我的 csv 文件进行排序。使用下面的代码很容易:

with open("outfile.csv","rb") as infile,open("outfile.csv","wb") as outfile:
    reader= csv.reader(infile,delimiter=',')
    writer= csv.writer(outfile)
    sort= sorted(reader,key=operator.itemgetter(7), reverse= True)
    for eachline in sort:
        writer.writerow(eachline)

然而,在我的示例中,它会排序,但会以一种奇怪的方式排序。例如,它会按以下顺序将文件返回给我:3.8,3.7,3.1,21.7,21.6,2.8。

由于这给我带来了问题,我想解决这个问题;如果不能,我想尽可能按最大长度排序。

这听起来令人困惑,但这是我遇到的问题。任何帮助都会很棒。

谢谢。

【问题讨论】:

  • 看起来像字母顺序,假设您想要数字顺序,您可能需要考虑如何将其转换为浮动进行排序,例如key=lambda x: float(x[7])
  • 我现在的问题是我首先有标题,因此当我需要它成为浮点数时,在运行时将它变成一个字符串。

标签: python sorting csv


【解决方案1】:

尝试排序float 值而不是str 值:

sort= sorted(reader,key=lambda x:float(x[7]), reverse= True)

【讨论】:

  • 我现在的问题是我首先有标题,因此当我需要它成为浮点数时,在运行时将它变成一个字符串
  • 如果您的输入中有标题,请尝试单独读取它,将其存储在某个变量中,然后对剩余的行进行排序。写结果的时候,先写header,再写排序后的结果。
猜你喜欢
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 2011-01-06
  • 2015-05-24
  • 2014-02-07
  • 1970-01-01
  • 2019-04-25
相关资源
最近更新 更多