반응형
Python 방식으로 csv 파일에 헤더 추가
두 개의 csv 파일을 병합하는 Python 스크립트를 작성했으며 이제 최종 csv에 헤더를 추가하고 싶습니다. 여기에 보고 된 제안을 따르려고했는데 다음과 같은 오류가 발생 expected string, float found
했습니다.. 이 문제를 해결하는 가장 비단뱀적인 방법은 무엇입니까?
내가 사용하는 코드는 다음과 같습니다.
import csv
with open('combined_file.csv', 'w', newline='') as outcsv:
writer = csv.DictWriter(outcsv, fieldnames = ["Date", "temperature 1", "Temperature 2"])
writer.writeheader()
with open('t1.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows(row + [0.0] for row in reader)
with open('t2.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows(row[:1] + [0.0] + row[1:] for row in reader)
DictWriter()
클래스는 기대하고 사전에 각 행을. 원하는 것이 초기 헤더를 작성하는 것 csv.writer()
뿐 이라면 일반 헤더를 사용하고 헤더 에 대한 간단한 행을 전달하십시오.
import csv
with open('combined_file.csv', 'w', newline='') as outcsv:
writer = csv.writer(outcsv)
writer.writerow(["Date", "temperature 1", "Temperature 2"])
with open('t1.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows(row + [0.0] for row in reader)
with open('t2.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows(row[:1] + [0.0] + row[1:] for row in reader)
대안은 데이터를 복사 할 때 사전을 생성하는 것입니다.
import csv
with open('combined_file.csv', 'w', newline='') as outcsv:
writer = csv.DictWriter(outcsv, fieldnames = ["Date", "temperature 1", "Temperature 2"])
writer.writeheader()
with open('t1.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows({'Date': row[0], 'temperature 1': row[1], 'temperature 2': 0.0} for row in reader)
with open('t2.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows({'Date': row[0], 'temperature 1': 0.0, 'temperature 2': row[1]} for row in reader)
루프를 실행하기 전에 행을 하나만 추가하면됩니다. 이 행에는 CSV 파일 헤더 이름이 포함됩니다.
schema = ['a','b','c','b']
row = 4
generators = ['A','B','C','D']
with open('test.csv','wb') as csvfile:
writer = csv.writer(csvfile, delimiter=delimiter)
# Gives the header name row into csv
writer.writerow([g for g in schema])
#Data add in csv file
for x in xrange(rows):
writer.writerow([g() for g in generators])
이것은 나를 위해 일했습니다.
header = ['row1', 'row2', 'row3']
some_list = [1, 2, 3]
with open('test.csv', 'wt', newline ='') as file:
writer = csv.writer(file, delimiter=',')
writer.writerow(i for i in header)
for j in some_list:
writer.writerow(j)
참고 URL : https://stackoverflow.com/questions/20347766/pythonically-add-header-to-a-csv-file
반응형
'Program Tip' 카테고리의 다른 글
setup.py에서 라이브러리 버전을 어떻게 지정할 수 있습니까? (0) | 2020.11.21 |
---|---|
SELECT * FROM 여러 테이블. (0) | 2020.11.21 |
화폐 / 통화에 대한 HTML5 입력 (0) | 2020.11.21 |
세로 스크롤바를 강제로 표시하려면 어떻게합니까? (0) | 2020.11.21 |
PHPUnit 모의 객체에서 두 번째 매개 변수를 테스트하는 방법 (0) | 2020.11.21 |