我有2个CSV文件,具有相同的列数和格式,每行包含有关服务器的详细信息。每个文件指的是不同的日期。

我想将Day2 CSV file列(列Size (GB))的每个D服务器(行)与Day1 CSV file列(列Size (GB))的D的每个服务器(行)进行比较,并且将输出写入column Eday2 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/

10-11 22:48
查看更多