Python 比较csv行并计算百分比

Python 比较csv行并计算百分比,python,csv,compare,Python,Csv,Compare,我对Python比较陌生。我试图找到一种方法来创建一个脚本,该脚本查看上个月名为“data_old”的CSV文件,并将其与最近一个月名为“data_new”的数据进行比较,最后将该数据输出到一个新的CSV“data_compare”中 每个月的文件都以一致的方式排列,如下所示(示例) 第1个月 公司,员工人数,需要通过,通过%,年龄符合要求 xxxxxxxx,100,80,30,30% 第3个月 公司,员工编号,需要通过,通过%,符合要求 xxxxxxxx,101,81,54,60% 我试图让输

我对Python比较陌生。我试图找到一种方法来创建一个脚本,该脚本查看上个月名为“data_old”的CSV文件,并将其与最近一个月名为“data_new”的数据进行比较,最后将该数据输出到一个新的CSV“data_compare”中

每个月的文件都以一致的方式排列,如下所示(示例)

第1个月
公司,员工人数,需要通过,通过%,年龄符合要求
xxxxxxxx,100,80,30,30%

第3个月
公司,员工编号,需要通过,通过%,符合要求
xxxxxxxx,101,81,54,60%

我试图让输出文件比较所有行的数据,并向我显示“改进百分比”,而不是“满足要求的百分比”。我尝试的任何操作似乎都不起作用

由于数字一直在变化,唯一常见的数据将是公司名称

我需要一个简单的,解释性的方法与评论…因为我想了解逻辑,所以我可以修改它,并添加功能


非常感谢。

这里是一个python代码示例,它可能会满足您的需要。此脚本会测量两个输入csv文件具有相同的行数。在函数
中,测试
我使用的函数
zip
,如果一个列表位于末尾,则该函数将停止。如果您的文件具有不同的行数,则必须手动删除哎呀,两个都是。但我认为这是一个很好的起点

!/usr/bin/env python
#-*-编码:utf-8-*-
导入csv
def parse_csv(文件名,排序_行=0,为_dict=False,分隔符=“,”):
r=列表()
打开(文件名为“rb”)作为f:
#生成csv读取器对象
reader=csv.reader(f,delimiter=delimiter)
如有规定:
#如果需要的话,做记录
header=[h.strip()表示读取器中的h.next()]
对于读取器中的行:
如有规定:
#如果需要的话,做记录
r、 追加(dict(zip(头,行)))
其他:
#删除行中的每个项目并将其附加到退货列表中
r、 追加([h.strip()表示第行中的h])
#按第一项对列表进行排序(本例中为公司名称)
r、 排序(key=lambda x:x[排序行])
返回r
def write_csv(文件名、字段名、行、分隔符=“,”):
打开(文件名为“w”)作为f:
#生成csv编写器对象
writer=csv.writer(f,delimiter=delimiter)
#写第一行标题
writer.writerow(字段名)
对于行中的行:
#写每一行
writer.writerow(行)
def test():
数据旧=解析csv(“m1.csv”)
数据\u new=parse\u csv(“m2.csv”)
#写入csv(“data\u compare.csv”,data\u old[:1][0],data\u old[1:])
结果=列表()
#在项目上循环(跳过第一个标题行)
对于zip中的o,n(数据旧[1:],数据新[1:]):
#计算改进(或任何需要计算的)
value=float(n[4]。替换(“%”,“”)-float(o[4]。替换(“%”,“”)
#创建行
结果.追加([o[0],%s%%%value,o[4],n[4])
#结果。追加([%s%%%value])
页眉=[“公司”、“改进百分比”、“旧”、“新”]
#页眉=[“公司”,“改善百分比”]
写入csv(“data\u compare.csv”,标题,结果)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
测试()

除了第一列(唯一的公司名称)之外的所有列都包含整数?