이 예에서는 정확한 결과가 나오지 않지만 거의 비슷합니다. 당신은 열 레이블로 두 번째 헤더 (단위) 저장하는 멀티 인덱스 컬럼을 사용할 수 있습니다
>>> import pandas as pd
>>> columns = pd.MultiIndex.from_tuples(
... zip(['date', 'x', 'y', 'z'],
... ['(yyyy-mm-dd)', '(s)', '(m)', '(kg)']))
>>> data = [['2014-03-12', 1, 2, 3],
... ['2014-03-13', 4, 5, 6]]
>>> df = pd.DataFrame(data, columns=columns)
>>> df
date x y z
(yyyy-mm-dd) (s) (m) (kg)
0 2014-03-12 1 2 3
1 2014-03-13 4 5 6
이 방법은 당신의 열이 올바른 유형을 유지할 수 있습니다 두 번째 헤더를 저장 (예, 열 x
는이어야한다 정수형) :
당신이
DataFrame
에
행로 두 번째 헤더를 저장 한 경우
>>> df.dtypes
date (yyyy-mm-dd) object
x (s) int64
y (m) int64
z (kg) int64
dtype: object
, 당신의 열 dtypes
당신은 아마하지 않을 object
을 될 것입니다.
쓰기 형식이 예와 매우 비슷한 생산 DataFrame
CSV의 :
>>> df.to_csv('out.csv', index=False)
>>> !cat out.csv
date,x,y,z
(yyyy-mm-dd),(s),(m),(kg)
,,,
2014-03-12,1,2,3
2014-03-13,4,5,6
유일한 차이점은 쉼표의 추가 라인은, 팬더는 데이터의 실제 행에서 다중 행 헤더를 분리하는 방법이다 . 이것은 CSV는 해당 DataFrame
로 다시 읽을 수 파일 허용 :
>>> df2 = pd.read_csv('out.csv', header=[0, 1])
>>> df2
date x y z
(yyyy-mm-dd) (s) (m) (kg)
0 2014-03-12 1 2 3
1 2014-03-13 4 5 6
참고 : 나는 this SO question 곳곳에이 정보를 많이 발견했다.
아마도 보통 파이썬 출력 (file.write())을 사용하여 첫 번째 줄을 쓴 다음 그 아래에 단위 줄이있는 데이터 프레임을 헤더에 쓸 수 있습니다. (이 방법이 작동하는지 여부는 모르지만 수행 방법은 다를 수 있습니다.) –
처음에는 "두 번째"헤더와 함께 새 행을 삽입하는 것과 어떻게 다른가요? – Ben
@Ben : 인덱스 문자열을 사용하여 어떻게 처리 할 수 있습니까 (datetime-index가 있나요?). 나는'df.loc()'을 사용하여 시도했지만 분명히 문법이 잘못되었습니다. (항상 ValueError : 키가 yyyy-mm-dd 인 DatetimeIndex 인덱스에 안전하지 않은 오류가 발생합니다.) –