Program Tip

Python 방식으로 csv 파일에 헤더 추가

programtip 2020. 11. 21. 09:26
반응형

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

반응형