【问题标题】:How do find the sum of difference between two csv [closed]如何找到两个csv之间的差异之和[关闭]
【发布时间】:2019-12-07 09:10:49
【问题描述】:

我有两个 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

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

【问题讨论】:

  • 你应该显示你有什么代码。
  • 我在尝试先生,但它不允许我编辑。使用手机

标签: python csv


【解决方案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

【讨论】:

  • 您只是实现了问题的第二部分,即未解决添加到 csv 或差异的问题。第二个代码中的data 也不正确。您指向的链接是什么?
【解决方案2】:

首先使用 pandas 读取您的 csv(您必须使用您的文件名/路径而不是 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)

然后将您的最终数据帧写入 csv:

df3.to_csv('file3.csv')

你可以找到总和:

print(df3[1].sum())

输出: 54

print(df3)

输出:

    0   1
0   A   9
1   B   18
2   C   27

【讨论】:

    【解决方案3】:

    使用内置 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
    

    【讨论】:

    • 但我怎样才能在最后达到总数。 ?
    • @詹姆斯。没看到最后一点。更新了 sn-p
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 2015-04-02
    • 2010-12-25
    相关资源
    最近更新 更多