在Python中将列添加到.CSV文件并计算值

时间:2016-09-20 12:45:09

标签: python-2.7 csv

我检查了很多解决方案,但我无法应用任何问题。

我有一个.csv文件,如下所示:

    Header_A;Header_B
    0;1
    1;4
    5;6
    6;7
    9;8

现在我想以pythonically方式向其中添加另一列“Header_C”,并根据每个定义的前两列的加法计算其值(x),所以类似

    def add(a, b):
        x = a + b
        return x

其中x将是Header_C列的值,a,b是Header_A和Header_B列的总和。

结果应如下所示:

    Header_A;Header_B;Header_C
    0;1;1
    1;4;5
    5;6;11
    6;7;13
    9;8;17

如果可能,无需安装其他模块。输出可以是新的.csv文件。

非常感谢!

2 个答案:

答案 0 :(得分:1)

pandas是您的解决方案:

import pandas as pd

df = pd.read_csv('a.csv')
df['Header_C'] = df['Header_A'] + df['Header_B']

df.to_csv('b.csv', sep=';', index=False)

有关大熊猫的更多信息,请访问http://pandas.pydata.org/

答案 1 :(得分:0)

即使使用

行,我仍然会遇到同样的错误
    df = pd.read_csv('a.csv', sep=';')

但是你激发了我的灵感并让我认识到这个问题可能就是标题!所以我尝试了一些东西,现在实际上让它工作了。 这是完全有效的代码:

import pandas
df = pandas.read_csv("a.csv", sep=';', names=['Header_A', 'Header_B'], header=0)
df['Header_C'] = df["Header_A"] + df["Header_B"]
df.to_csv("b.csv", sep=';', index=False)

如果header设置为NONE,Python会将值视为字符串,这会产生如下内容:

9 + 3 = 93

如果设置header = 0,则覆盖它。我不确定我的解释是否准确,但现在该程序做了我想要的!非常感谢!

但是,我仍然对使用CSV模块或纯Python WITHOUT模块的解决方案感兴趣!任何人吗?