使用python按特定条件合并多个csv文件

时间:2016-12-18 18:31:14

标签: python csv merge

我有10个使用python创建的CSV文件。每个CSV文件大约有330K行(行),每行看起来像:

0.334,0.0232,0.00086,1.642e-05

[空行]

0.334,0.0232,0.00086,1.742e-05

[空行]

...

(我不确定为什么python在每行之后写入一个空行)。

我正在尝试合并名为Parameters1,Parameters2的10个文件....参数10,排除空行,​​仅当第二列包含大于0.1的值时才写入。

fout = open("C:\Anaconda3\Sr90NHPModelParameters\Parameters100.csv","a")
for num in range(1,11):
    for line in open("C:\Anaconda3\Sr90NHPModelParameters\Parameters"+str(num)+".csv"):
        if line[0]!="":
            if line[1]>0.1:
                fout.write(line)
            else:
                pass
        else:
            pass
fout.close()

如果我运行上面的代码,我会得到无法解决的类型:str()>浮动()。

如果我改为运行相同的代码

if(line[1])>0.1

if float(line[1])>0.1:

我得到ValueError:无法将字符串转换为float:'。'

我不确定为什么会这样。我确实有'。' ,但它是数字的一部分,例如0.334或1.642e-05。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

在您能够使用csv模块重构代码之前,您可以尝试在条件之前将line = line.strip().split(",")添加到脚本中,以确保您实际使用list }。以下内容应该是一个不错的例子:

with open("C:\Anaconda3\Sr90NHPModelParameters\Parameters100.csv","a") as fout:
    for num in range(1,11):
        for line in open("C:\Anaconda3\Sr90NHPModelParameters\Parameters"+str(num)+".csv"):
            line = line.strip().split(",")
            if line[0] == '' or float(line[1]) < 0.1:
                continue
            else:
                fout.write(",".join(line)+"\n")

我希望现在有所帮助。