2014-10-22 1 views
1

저는 팬더와 파이썬에서 새로운입니다. 이해할 수없는 .dat 파일 집합이있어서 하나의 .csv 파일로 수집합니다.빈 열이없는 .dat 파일에서 데이터를 가져 오는 방법

path =r'/Users/Desktop/03/17' 
filenames = glob.glob(path + "/*dat") 

dfs = [] 
for filename in filenames: 
dfs.append(pd.read_csv(filename)) 

data_day = pd.concat(dfs,ignore_index=True)  
data_day.head() 
data_day.to_csv('/Users/Desktop/11.csv',index=False) 
data2 = pd.read_csv('/Users/Desktop/11.csv', sep=' ') 

data1 = data2.dropna(axis=1) 
data1 

이 유형의 .dat 파일에는 21 개의 열이 포함되어 있습니다. 21 columns 그러나이 유형의 파일에는 27 개의 열이 포함되어있어 작동하지 않습니다. 27 columns 27 개의 열 대신 18 개의 열로 파일을 만듭니다. 내 실수는 무엇입니까?

+0

다음을 시도해보십시오 :'data2 = pd.read_csv ('/ Users/Desktop/11.csv', sep = '\ s +')', 첫 번째'read_csv '가 정확히 읽었는지 확실하지 않지만 dat 파일의 하나 이상의 공백을 구분 기호로 사용하십시오 – EdChum

+0

또한 dat 파일은 고정 너비 파일 인 것처럼 보이므로'data2 = pd.read_fwf ('/ Users/Desktop/11.csv')'를 시도하고'dfs .append (pd.read_fwf (filename))' – EdChum

+0

,이 CSV-separator를 읽으려고하면 '작동하지 않습니다. – Shin

답변

0

링크 된 파일의 구분 기호가 공백이 아니므로 pd.read_csv(..., sep=' ')이 실패합니다. 여백을 구분 기호로 사용하려면 pd.read_csv(..., delim_whitespace=True)을 시도하십시오. 이 값은 pd.read_csv(..., sep='\s+')과 비슷하지만 빠릅니다.

+0

분리 기호에 문제가 없습니다. 95982 행 × 18 열을 다시 표시합니다. – Shin

+0

그건 이상합니다. (3331, 27) : [33] : pd.read_csv ("CFKADS2104-20140317-070553Z-DataLog_User.dat", delim_whitespace = True) .shape Out [33] : '. 팬더의 어떤 버전을 사용하고 있습니까? – jme

+0

예, 27 개의 열이 있어야합니다. 0.14.1 pandas – Shin

관련 문제