2016-10-27 1 views
0

을 사용하여이 CSV의 구조를 복제 할 수 있습니까?멀티 헤더 팬더 데이터 프레임

enter image description here

모든 데이터가 있습니다pd.DataFrame

내 우려 특성을 분석 한 후 하나 개의 HDF5 파일에서 뽑아되고 있다는 CSV의 meta headermeta data (라인 1, 2) 길이 또는 모양이 attribute headerattribute data과 일치하지 않습니다. 여기

내가 전화하는 방법입니다 pd.DataFrame :

# Meta Pandas DataFrame 
    meta_df = pd.DataFrame(index=range(0, 8760, 24), columns=['source', 'location_id', 'state', 'country', 'latitude', 
                   'longitude', 'time_zone', 'elevation', 'clearsky_dhi', 
                   'clearsky_dni', 'clearsky_ghi', 'dewpoint_unit', 
                   'temperature_unit']) 
    # Meta Header & Data 
    meta_df['source'] = source 
    meta_df['location_id'] = location_id 
    meta_df['state'] = state 
    meta_df['country'] = country 
    meta_df['latitude'] = latitude 
    meta_df['longitude'] = longitude 
    meta_df['time_zone'] = local_time 
    meta_df['elevation'] = elevation 
    meta_df['clearsky_dhi'] = clearsky_dhi 
    meta_df['clearsky_dni'] = clearsky_dni 
    meta_df['clearsky_ghi'] = clearsky_ghi 
    meta_df['dewpoint_unit'] = dewpoint_unit 
    meta_df['temperature_unit'] = temperature_unit 

    # Attribute Pandas DataFrame 
    att_df = pd.DataFrame(index=range(0, 8760, 24), columns=['dhi', 'dni', 'ghi', 'source', 'dew_point', 'temperature']) 

    # Attribute Header & Data 
    att_df['year'] = year 
    att_df['month'] = month 
    att_df['day'] = day 
    att_df['hour'] = hour 
    att_df['minute'] = minute 
    att_df['dhi'] = dhi 
    att_df['dni'] = dni 
    att_df['ghi'] = ghi 
    att_df['dew_point'] = dew_point 
    att_df['temperature'] = temperature 

    # Make one DataFrame with multiple headers? 
    # Do something, then export to csv. 
    df.to_csv(ndir_root + ndir + '/' + fname + '.csv', index=False) 

는 두 개의 별도 dataframes을 만든 다음 CSV로 마지막 하나를 세 번째 dataframe를 생성하고 수출 수직으로 쌓아 최선입니까?

__

답변

1

이 방법은 파일 경로 (완료 한 것처럼) 또는 버퍼를 허용하므로 .to_csv()를 통해이 작업을 수행 할 수 있다고 생각합니다. 메타 헤더, 메타 데이터 및 속성 헤더 문자열의 순서를 알고 있다고 가정하고 파일에 쓰는 방법을 선택할 수 있습니다. 누락 된 부분은 아래에 나와 있습니다.

with open('output.csv','w') as fid: 
    # write your meta header etc., here assumed to be a list of strings 
    fid.write(','.join(meta_header) + '\n') 
    fid.write(','.join(meta_data) + '\n') 
    fid.write(','.join(attribute_header) + '\n') 

    # now write attr_df to a csv by passing data to your fid buffer 
    attr_df.to_csv(fid, sep=',', header=False, index=False)