안녕하세요 저는 공통 열 또는 기본 키를 기반으로 두 CSV 파일에서 특정 필드의 병합에서 새 CSV 파일을 만들려고합니다. 나는 powershell에서 똑같은 일을 시도했으나 효과가 있었지만 프로세스를 완료하는 데는 매우 느 렸습니다. 5000 개 이상의 라인 파일을 병합하는 데 30 분 이상 걸렸으므로 파이썬에서이 작업을 시도했습니다. 나는 새로운이에요. 제발 쉽게가주세요.Python 사전을 사용하여 파이썬에서 CSV 파일 병합
그래서 두 파일은 infile.csv 및 checkfile.csv이고 생성 된 출력 파일의 열은 infile.csv의 열을 기반으로합니다. 이 코드는 checkfile.csv의 값을 검사하고 outfile.csv를 만들고 infile.csv의 열을 복사하며 checkfile.com의 해당 값을 기반으로 두 필드의 값을 다시 작성해야합니다. 세부
은 다음과infile.csv -
"StockNumber","SKU","ChannelProfileID","CostPrice"
"10m_s-vid#APTIIAMZ","2VV-10",3746,0.33
"10m_s-vid#CSE","2VV-10",3746,0.98
"1RR-01#CSE","1RR-01",3746
"1RR-01#PCAWS","1RR-01",3746,
"1m_s-vid_ext#APTIIAMZ","2VV-101",3746,0.42
checkfile.csv
ProductCode, Description, Supplier, CostPrice, RRPPrice, Stock, Manufacturer, SupplierProductCode, ManuCode, LeadTime
2VV-03,3MTR BLACK SVHS M - M GOLD CABLE - B/Q 100,Cables Direct Ltd,0.43,,930,CDL,2VV-03,2VV-03,1
2VV-05,5MTR BLACK SVHS M - M GOLD CABLE - B/Q 100,Cables Direct Ltd,0.54,,1935,CDL,2VV-05,2VV-05,1
2VV-10,10MTR BLACK SVHS M - M GOLD CABLE - B/Q 50,Cables Direct Ltd,0.86,,1991,CDL,2VV-10,2VV-10,1
내가 점점 오전 outfile.csv입니다 -
StockNumber,SKU,ChannelProfileID,CostPrice
10m_s-vid#APTIIAMZ,2VV-10,"(' ',)",
10m_s-vid#CSE,2VV-10,"(' ',)",
1RR-01#CSE,1RR-01,"(' ',)",
1RR-01#PCAWS,1RR-01,"(' ',)",
1m_s-vid_ext#APTIIAMZ,2VV-101,"(' ',)",
그러나 outfile.csv 필요합니다. -
StockNumber,SKU,ChannelProfileID,CostPrice
10m_s-vid#APTIIAMZ,2VV-10,1991,0.86
10m_s-vid#CSE,2VV-10,1991,0.86
1RR-01#CSE,1RR-01
1RR-01#PCAWS,1RR-01
1m_s-vid_ext#APTIIAMZ,2VV-101
마지막 코드 -
import csv
with open('checkfile.csv', 'rb') as checkfile:
checkreader = csv.DictReader(checkfile)
product_result = dict(
((v['ProductCode'], v[' Stock']), (v['ProductCode'], v[' CostPrice'])) for v in checkreader
)
with open('infile.csv', 'rb') as infile:
with open('outfile.csv', 'wb') as outfile:
reader = csv.DictReader(infile)
writer = csv.DictWriter(outfile, reader.fieldnames)
writer.writeheader()
for item in reader:
result = product_result.get(item['SKU'], " ")
item['ChannelProfileID'] = result,
item['CostPrice'] = result
writer.writerow(item)
문제가 무엇인지 확실하지 않습니다. 또한 원하는 결과가 어떤 모양인지 분명하지 않습니다. – pillmuncher
또한 infile 헤더는 4 개의 필드를 정의하지만 그 아래에는 3 개가 있습니다. – pillmuncher
지금은 예상 outfile.csv를 추가했습니다. 보시다시피 ChannelProfileID 및 CostPrice 항목은 채워 져야하지만 그렇지 않습니다. – Anike