Tôi có một csv file1 mà là giống nhưCách so sánh hai tệp csv?
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
Tôi có một tập tin csv 2 đó là như thế nào,
Alabama AL 1
Alaska AK 2
Arizona AZ 4
Arkansas AR 5
California CA 6
Colorado CO 8
Connecticut CT 9
SEATTLE WA 53
Bây giờ tôi phải nối thêm giá trị cột thứ ba từ csv file2 để csv file1, bằng cách so sánh cột thứ hai
Ví dụ: trông giống như,
AZ code is 4 WA code is 53 bất cứ nơi nào AZ, WA là có trong file1 csv của tôi, mã nên được nối vào một cột
đầu ra của tôi sẽ giống như thế,
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
Đây là mã mà tôi đã cố gắng,
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)
Output đang nhận được như thế nào,
AZ FLAGSTAFF AZ 44230.4 4.42 KA1_Podium_Garage_S 4
WA SEATTLE WA 45329.3 4.53 KA1_Podium_Garage_S 53
một 'dict' chỉ có thể có một giá trị cho mỗi phím; nếu bạn cố gắng thêm một khóa nhiều lần với các giá trị khác nhau, nó sẽ chỉ lấy một số mới nhất –
Tôi đề nghị chuyển đổi logic của bạn: tệp csv thứ hai của bạn dường như chỉ có một cá thể của mỗi trạng thái. tạo một dict với csv đó, nơi các khóa: cặp val là trạng thái: các số sau đó lặp lại thông qua csv đầu tiên và nối thêm các giá trị nếu cần. –