【问题标题】:Find Min Value of All Rows Within One CSV and Print All to New File in Python查找一个CSV中所有行的最小值并在Python中全部打印到新文件
【发布时间】:2015-04-16 10:59:49
【问题描述】:

我有一个包含 csv 文件的文件夹,每个文件看起来像这样:

TPN,201203,by the congress,3,0.000001559523908541200542298447130
TPN,201312,by the congress,2,0.000001975728179317089554819047995
TPN,201308,by the congress,2,0.000002130556224313481520620588417
CR,200910,by the congress,10,0.000001254229103759238181242376639
CR,200911,by the congress,5,6.974221464170843876612631794E-7
MED,200507,by the congress,2,0.000004113271264069958517659301854

我想要一个脚本,它遍历每个文件并找到该文件中的最小日期值,然后将该文件中包含该日期值的每一行打印到一个新文件中(因此,如果两行具有相同的日期值,它应该打印两者)。我有这个:

import csv
import os
import codecs 
import unicodecsv

folder = '/Users/xyz/Desktop/TextAnalysis/PointsOfOrigin/trigramsdated/'

c = csv.writer(open("trigrampointsoforigin.csv", "a"))

for file in os.listdir (folder):
    with open(os.path.join(folder, file), mode='rU') as f:
        m=min(int(line[1]) for line in unicodecsv.reader(f, encoding='utf-8', errors='replace'))
        f.seek(0)
        for line in unicodecsv.reader(f):
            if int(line[1])==m:
                print line
                c.writerow(line)

print "All done."

但由于一些奇怪的原因,它只是将每个 csv 中的最后一行打印到“trigramspointsoforign.csv”文件中。

任何帮助都非常非常感谢。

【问题讨论】:

  • "并且每个文件看起来像这样:"??
  • 糟糕!谢谢@AshwiniChaudhary,我已经添加了示例文件。
  • 如果只写最后一行,那么c.writerow(line) 可能没有正确缩进。

标签: python csv min


【解决方案1】:

line[1] 是否真的打印出日期值?在任何情况下,您都可以避免其中一个内部循环:

for file in os.listdir (folder):
    with open(os.path.join(folder, file), mode='rU') as f:
        minline = [-1,-1] # Some min value
        for linenum, line in enumerate(unicodecsv.reader(f)):
            if int(line[1]) < int(minline[1]):
                # Replace with new minline
                minline = copy.copy(line) 
        print minline
        c.writerow(minline)

您需要import copy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    相关资源
    最近更新 更多