我有2个CSV文件,具有相同的列数和格式,每行包含有关服务器的详细信息。每个文件指的是不同的日期。
我想将Day2 CSV file
列(列Size (GB)
)的每个D
服务器(行)与Day1 CSV file
列(列Size (GB)
)的D
的每个服务器(行)进行比较,并且将输出写入column E
的day2 CSV file
或单独的第3个CSV文件中,以跟踪每天大小的差异/增长。
我正在尝试在Python
中实现它。
接下来,我提供一个示例:
day1.csv
Server Site Platform Size(GB)
a Primary Windows 100
b Secondary Unix 200
c Primary Oracle 500
day2.csv
Server Site Platform Size(GB)
a Primary Windows 150
b Secondary Unix 100
c Primary Oracle 500
预期结果
output.csv
Server Site Platform Size(GB) Growth(GB)
a Primary Windows 150 50
b Secondary Unix 100 -100
c Primary Oracle 500 0
编辑1:
这是我到目前为止开发的代码:
import csv
t1 = open('/day1.csv', 'r')
t2 = open('/day2.csv', 'r')
outputt=open("/growth.csv","w")
fileone = t1.readlines()
filetwo = t2.readlines()
for line in filetwo:
row = row.split(',')
a = str(row[0])
b = str(row[1])
c = str(row[2])
d = float(row[3])
f = float(filetwo.row[3] - fileone.row[3])
outputt.writerow([a,b,c,d,e,f])
outputt.write(line.replace("\n","") + ";6column\n") outputt.close()
fileone.close()
最佳答案
这不是一个非常通用的解决方案,但我尝试尽可能地遵循您的方法:
import csv
# Open read files
file1 = open('day1.csv', 'r')
file2 = open('day2.csv', 'r')
# Open output file
outputFile = open ('day3.csv', 'w')
csvWriter = csv.writer(outputFile, delimiter=',')
# Write the output file header
csvWriter.writerow(["Server", "Site", "Platform", "Size", "Growth"])
# Process input files
csvReader1 = csv.reader(file1, delimiter=',')
csvReader2 = csv.reader(file2, delimiter=',')
# Skip headers
csvReader1.next()
csvReader2.next()
# Process data
for rowF2 in csvReader2:
# Get the content of each line in F1
rowF1 = csvReader1.next()
# Uncomment for debug
#print rowF1
#print rowF2
# Construct output line from F2 values
colA = str(rowF2[0])
colB = str(rowF2[1])
colC = str(rowF2[2])
# Compute the growth
colD = str(int(rowF2[3]) - int(rowF1[3]))
# Write the output file
csvWriter.writerow([colA, colB, colC, colD])
file1.close()
file2.close()
outputFile.close()
在我看来,最大的担忧是:
您需要使用
CSV
库(csv读取器和写入器)您需要在需要时跳过标题
您需要在执行结束时关闭所有文件
关于python - Python:比较2个CSV文件的差异1列值并在第3个CSV文件中输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46036425/