如何找到两个csv之差的总和

时间:2019-07-30 03:10:01

标签: python csv

我有两个csv文件。

Csv 1
A 1
B 2
C 3

Csv 2
A 10
B 20
C 30

我如何找到第2列的总和

就像10-1 + 20-2 + 30-3

所以输出的csv应该是

A 9
B 18
C 27

Total 54

我可以实现差异,但不能完全实现。有帮助吗?

3 个答案:

答案 0 :(得分:1)

该熟悉大熊猫了:

import pandas as pd
data = pd.read_csv(file_path, columns=['name', 'value'])
sum = data['value'].sum()

Pandas具有大量有据可查的函数,可用于确定列/行之间的差异。

或者,例如:

df = pd.DataFrame(columns=['name', 'value'])
for file in filepaths:
    new_df = pd.read_csv(file, columns=['name', 'value'])
    pd.append(df, new_df)
sum = data['value'].sum()

但这是非常基础的,并且会丢失一些有关原始数据来自何处的信息,在这种情况下,您要开始考虑如何正确construct your dataframe with indexes

答案 1 :(得分:1)

使用内置csv模块。

例如:

import csv

with open("Csv 1.csv") as csvfile_1, open("Csv 2.csv") as csvfile_2, open('outfile.csv', "w", newline="") as outfile_csv:
    reader = csv.reader(csvfile_1, delimiter=" ")     #read file 1
    reader2 = csv.reader(csvfile_2, delimiter=" ")    #read file 2
    writer = csv.writer(outfile_csv, delimiter=" ")   #Create writer object
    c = 0
    for m, n in zip(reader2, reader):
        val = int(m[1])-int(n[1])
        writer.writerow([m[0], int(m[1])-int(n[1])])  #Write result.
        c += val
    writer.writerow(["Total", c])  #Write Total

答案 2 :(得分:0)

首先使用熊猫读取您的csv(您必须使用fileName /路径,而不是file1.csv,file2.csv):

import pandas as pd
df1 = pd.read_csv('file1.csv',header=None)
df2 = pd.read_csv('file2.csv',header=None)

然后在另一个数据框中找到差异:

df3 = df2
df3[1] = df2[1].sub(df1[1], axis = 0)

然后将您的最终datafarame写入csv:

df3.to_csv('file3.csv')

您可以找到总和:

print(df3[1].sum())

输出: 54

print(df3)

输出:

    0   1
0   A   9
1   B   18
2   C   27