gpt4 book ai didi

python - 如何比较两个csv文件?

转载 作者:太空狗 更新时间:2023-10-30 01:25:58 26 4
gpt4 key购买 nike

我有一个csv file1,就像

FLAGSTAFF   AZ  50244.67    5.02    KA1_Podium_Garage_S
FLAGSTAFF AZ 33752.13 3.38 KA1_Podium_Garage_S
FLAGSTAFF AZ 11965.5 1.2 KA1_Podium_Garage_S
FLAGSTAFF AZ 3966.48 0.4 KA1_Podium_Garage_S
SEATTLE WA 12646.9 1.26 KA1_Podium_Garage_S
SEATTLE WA 225053.92 22.51 KA1_Podium_Garage_S
SEATTLE WA 23974.3 2.4 KA1_Podium_Garage_S
SEATTLE WA 7036.4 0.7 KA1_Podium_Garage_S
SEATTLE WA 3021.93 0.3 KA1_Podium_Garage_S

我有一个 csv 文件 2,就像 ,

Alabama     AL  1
Alaska AK 2
Arizona AZ 4
Arkansas AR 5
California CA 6
Colorado CO 8
Connecticut CT 9
SEATTLE WA 53

现在我必须将第三列值从 csv file2 附加到 csv file1,通过比较第二列

例如它应该看起来像,

AZ 代码为 4WA代码是53无论 AZ,WA 在我的 csv file1 中哪里,代码都应该附加到一列中

我的输出应该是这样的

FLAGSTAFF   AZ  50244.67    5.02    KA1_Podium_Garage_S 4
FLAGSTAFF AZ 33752.13 3.38 KA1_Podium_Garage_S 4
FLAGSTAFF AZ 11965.5 1.2 KA1_Podium_Garage_S 4
FLAGSTAFF AZ 3966.48 0.4 KA1_Podium_Garage_S 4
SEATTLE WA 12646.9 1.26 KA1_Podium_Garage_S 53
SEATTLE WA 225053.92 22.51 KA1_Podium_Garage_S 53
SEATTLE WA 23974.3 2.4 KA1_Podium_Garage_S 53
SEATTLE WA 7036.4 0.7 KA1_Podium_Garage_S 53
SEATTLE WA 3021.93 0.3 KA1_Podium_Garage_S 53

这是我试过的代码,

with open("/home/sumit/Desktop/CSV_FILE1.csv", "r") as f:
first = {rows[1]: rows[0:] for rows in list(csv.reader(f))}

# compare second csv and append Code
with open("CSVFILE2.csv", "r") as f1:
for row in csv.reader(f1):
if row[1] in first:
first[row[1]].append(row[2])

# convert dict back to list
merged = [(k,) + tuple(v) for k, v in first.items()]

# write list to output csv
with open("output.csv", "w") as f1:
csv.writer(f1).writerows(merged)

输出越来越像,

AZ  FLAGSTAFF   AZ  44230.4 4.42    KA1_Podium_Garage_S 4
WA SEATTLE WA 45329.3 4.53 KA1_Podium_Garage_S 53

最佳答案

此行根据您的第一个文件创建一个基于州缩写的字典。这看起来是错误的,因为字典只能有每个键一次,例如,您有多个带有“AZ”的行。

first = { rows[1]: rows[0:] for rows in list(csv.reader(f)) }

相反,您应该根据第二个文件制作字典:

with open("CSVFILE2.csv", "r") as f1:
code = { row[1]: row[2] for row in csv.reader(f1) }

然后,遍历您的第一个文件,并将适当的代码附加到每一行。

with open("/home/sumit/Desktop/CSV_FILE1.csv", "r") as f:
merged = [ row + [code[row[1]]] for row in csv.reader(f) ]

并将合并后的数据写入新文件。


row + [code[row[1]]]的解释:

如果行是 ["FLAGSTAFF", "AZ", 50244.67, 5.02, "KA1_Podium_Garage_S"],则

  • row[1]"AZ",
  • code[row[1]]code["AZ"]4,
  • [code[row[1]]] 是列表 [4]
  • row + [code[row[1]] 是列表连接,产生所需的新行值:["FLAGSTAFF", "AZ", 50244.67, 5.02, "KA1_Podium_Garage_S ", 4]

关于python - 如何比较两个csv文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47664981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com