2016-04-11 3 views
0

У меня есть текстовый файл, который выглядит следующим образом:Как читать txt-файл в pandas с несколькими разделителями?

1 
    SWAT May 20 2015 VER 2015/Rev 637                 0/ 0/ 0  0: 0: 0 

    General Input/Output section (file.cio):           
    3/23/2016 12:00:00 AM ARCGIS-SWAT interface AV         



      RES MON VOLUMEm3 FLOW_INcms FLOW_OUTcms PRECIPm3  EVAPm3 SEEPAGEm3 SED_INtons SED_OUTtons SED_CONCppm ORGN_INkg ORGN_OUTkg RES_ORGNppm ORGP_INkg ORGP_OUTkg RES_ORGPppm NO3_INkg NO3_OUTkg RES_NO3ppm NO2_INkg NO2_OUTkg RES_NO2ppm NH3_INkg NH3_OUTkg RES_NH3ppm MINP_INkg MINP_OUTkg RES_MINPppm CHLA_INkg CHLA_OUTkgSECCHIDEPTHm PEST_INmg REACTPSTmg VOLPSTmg SETTLPSTmgRESUSP_PSTmgDIFFUSEPSTmgREACBEDPSTmg BURYPSTmg PEST_OUTmgPSTCNCWmg/m3PSTCNCBmg/m3 
RES   1 1 0.6062E+07 0.6285E+00 0.0000E+00 0.8282E+05 0.6664E+05 0.0000E+00 0.1900E+02 0.0000E+00 0.6782E+02 0.3444E+04 0.0000E+00 0.1546E-01 0.6055E+03 0.0000E+00 0.1315E-02 0.1358E+04 0.0000E+00 0.6315E-02 0.1422E+02 0.0000E+00 0.9853E-04 0.1722E+04 0.0000E+00 0.9114E-02 0.5736E+03 0.0000E+00 0.1543E-02 0.0000E+00 0.0000E+00 0.3960E+01 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 

Я попытался код с различными разделителями, но всегда мой полученный dataframe имеет только один столбец:

> df=pd.read_csv('output.rsv', skiprows=5, sep='\t', engine='python') 

То, что я хочу сделать с этим данные только разделить этот текст на столбцы так:

RES MON VOLUMEm3 
1 1 1000 
2 1 1000 
... 
+0

Идея: я попытался бы отключить весь заголовок с помощью 'skiprows = 9, header = None, sep = '\ s +'' и, возможно, 'nrows = some_small_number' для небольшого фрагмента. Надеемся, что разделители не являются некоторыми странными символами юникода. – ptrj

ответ

0

\s+ разделителем будет работать:

df = pd.read_csv(os.path.join(maindir, 'EDMA_1_rcp26_2025_1_output.rsv'),\ 
skiprows = 9, delimiter = r'\s+', header = None) 

Довольно просто, на самом деле.

0
pd.read_csv(filename, skiprows=5, skipinitialspace=True, sep=' ') 

Возможно, вам понадобится sep='\t' в зависимости от того, как был закодирован ваш текстовый файл.

Это работало для меня, когда вы копировали свои данные выше и вставляли в .txt-файл, который я тогда читал.

+0

Да, я могу прочитать файл, но dataframe имеет размеры (1300,1), но мне нужен фреймворк с несколькими столбцами (1300,31). –

Смежные вопросы