2017-11-28 16 views
-5

csv 파일을 쪽모 세공 형식으로 변환해야합니다. 하지만이 CSV 파일은 매우 커서 (65,000 개 이상의 행과 1,000 개 이상의 열), 내 parquet 파일을 각 50000 행과 200 열만큼 여러 개의 하위 파일로 분할해야합니다. 이미 partition_on 및 row_group_offsets을 시도했지만 작동하지 않습니다.fastparquet을 사용하여 하위 파일의 쪽모 세공 파일 나누기

내 코드 :

import pandas as pd 
import fastparquet as fp 

df = pd.read_csv('D:\Users\mim\Desktop\SI\LOG\LOG.csv') 
fp.write(r'D:\Users\mim\Desktop\SI\newdata.parq', df) 

답변

0

[정답] :

import os 
import pandas as pd 
import fastparquet as fp 

pathglobalcsv = 'D:\Users\mim\Desktop\SI' 
inputFile = os.path.join(pathglobalcsv, 'LOG.csv') 

table = pd.read_csv(inputFile, delimiter=';', chunksize=5000) 
listrow = list(table) 
columnCount = len(listrow[0]) 

fileCounter = 0 

for row in listrow: 
    for col in range(1, columnCount, 199): 
     timestamp = row.ix[:, 0] #timestamp 
     timestampcolumn = pd.DataFrame(timestamp) 
     i=col+199 
     maincols = row.ix[:, col:i] #other columns 
     maincolumns = pd.DataFrame(maincols) 
     outputDF = pd.concat([timestampcolumn, maincolumns], axis=1) 

     #create a new file 
     fileCounter += 1 

     #parquet file 
     fp.write(r'C:\Users\mim\eclipse-workspace\SI\file.part_' + str(fileCounter) + '.par', outputDF)