我有两个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
我可以实现差异,但不能完全实现。有帮助吗?
答案 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