팬더 DataFrame에 헤더 행을 추가하는 방법


166

에 CSV 파일을 읽고 pandas있습니다. 이 CSV 파일은 4 개의 열과 일부 행으로 구성되지만 헤더 행이 없으므로 추가하고 싶습니다. 나는 다음을 시도했다.

Cov = pd.read_csv("path/to/file.txt", sep='\t')
Frame=pd.DataFrame([Cov], columns = ["Sequence", "Start", "End", "Coverage"])
Frame.to_csv("path/to/file.txt", sep='\t')

그러나 코드를 적용하면 다음 오류가 발생합니다.

ValueError: Shape of passed values is (1, 1), indices imply (4, 1)

오류가 정확히 무엇을 의미합니까? 그리고 내 csv 파일 / 팬더 df에 헤더 행을 추가하는 파이썬의 깔끔한 방법은 무엇입니까?


질문에 대한 다른 해석은 다음과 같습니다. 기존 데이터 프레임에 다른 헤더를 추가하여 MultiIndex를 만듭니다.
cs95

답변:


257

names에서 직접 사용할 수 있습니다read_csv

names : array-like, default 없음 사용할 열 이름 목록입니다. 파일에 헤더 행이 없으면 명시 적으로 header = None을 전달해야합니다.

Cov = pd.read_csv("path/to/file.txt", 
                  sep='\t', 
                  names=["Sequence", "Start", "End", "Coverage"])

9
당신은 웃을 것입니다. 나는 실제로 이것을 시도했지만 이름 주위에 대괄호를 넣어야한다는 것을 알지 못했습니다. 논리적으로 회고합니다. 감사합니다!
sequence_hard

걱정하지 마십시오. 우리 모두 그 바보 같은 실수를 저질렀습니다. 나는 그들도 유죄입니다.
Leb

@ Leb, 나는 정확히 같은 문제가 있었고 해결책을 시도했습니다. 테이블의 헤더를 얻었지만 첫 번째 행도 동일한 헤더 이름으로 대체되었습니다. 내가 지금 무슨 일을합니까?
007mrviper

NaN속성에 더 많은 데이터를 내 데이터에 추가 합니다. 내 구분 기호가 빈 공간이기 때문입니다.
SalahAdDin

128

또는 csv를 읽고 header=None다음과 같이 추가 할 수 있습니다 df.columns.

Cov = pd.read_csv("path/to/file.txt", sep='\t', header=None)
Cov.columns = ["Sequence", "Start", "End", "Coverage"]

15
col_Names=["Sequence", "Start", "End", "Coverage"]
my_CSV_File= pd.read_csv("yourCSVFile.csv",names=col_Names)

이 작업을 수행 한 후 확인하십시오. 하지만 여전히 ...

my_CSV_File.head()

그것이 도움이되기를 바랍니다 ... 건배


{}버튼으로 코드를 포맷하십시오 . 들여 쓰기가 중요합니다.
Mr. T

7

코드를 수정하기 위해 간단히로 변경할 [Cov]수 있습니다 Cov.values.의 첫 번째 매개 변수는 pd.DataFrame다차원 numpy배열이됩니다.

Cov = pd.read_csv("path/to/file.txt", sep='\t')
Frame=pd.DataFrame(Cov.values, columns = ["Sequence", "Start", "End", "Coverage"])
Frame.to_csv("path/to/file.txt", sep='\t')

그러나 가장 현명한 솔루션은 여전히 and pd.read_excel와 함께 사용 하는 것 입니다.header=Nonenames=columns_list


columns_list를 줄 때 선택된 열에 기본값을 추가 할 수 있습니까?
Chintan Gotecha
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.