2017-06-01 19 views
-1

如何單獨的數據幀如下:如何在大熊貓中給定字符長度?

yr mon day  Tmax Tmin pcp 
    2013 4 22  5.09-10.92 0.0       
    2013 4 23  2.77 -9.63 0.5       
    2013 4 24  0.28 -9.90 9.9       
    2013 4 25  0.76 -6.70 12.2       
    2013 4 26  -0.35 -9.48 0.0       
    2013 4 27  7.22-10.47 0.0       
    2013 4 28  4.19-10.78 0.0 

你看:有Tmax和TMIN之間沒有空格原則。 Tmax和Tmin的最大寬度是6個字符空間。如果少於6個空格,填充空格。我想把它讀到df並分開每一列。
分隔列作爲給定的字符長度?

+1

您能否詳細說明您的問題? – Jeril

回答

2

試試這個:

df = pd.read_fwf(filename) 
+0

這個功能是我想要的。 – Cobin

+0

@Cobin,很高興我能幫忙:) – MaxU

1

看來你需要str.extractfloatsints,解決工作,如果所有的數據都在由iloc選擇一列:

pat="(\d+)\s*(\d+)\s*(\d+)\s*([-+]?\d+\.\d+|\d+)\s*([-+]?\d+\.\d+|\d+)\s*([-+]?\d+\.\d+|\d+)" 
df1 = df.iloc[:, 0].str.extract(pat, expand=True) 
df1.columns = ['year', 'mont','day','Tmax','Tmin','pcp'] 
print (df1) 
    year mont day Tmax Tmin pcp 
0 2013 4 22 5.09 -10.92 0.0 
1 2013 4 23 2.77 -9.63 0.5 
2 2013 4 24 0.28 -9.90 9.9 
3 2013 4 25 0.76 -6.70 12.2 
4 2013 4 26 -0.35 -9.48 0.0 
5 2013 4 27 7.22 -10.47 0.0 
6 2013 4 28 4.19 -10.78 0.0 

另一種解決方案是使用read_fwf並指定colspecs

import pandas as pd 
from pandas.compat import StringIO 

temp=u"""yr mon day  Tmax Tmin pcp 
    2013 4 22  5.09-10.92 0.0       
    2013 4 23  2.77 -9.63 0.5       
    2013 4 24  0.28 -9.90 9.9       
    2013 4 25  0.76 -6.70 12.2       
    2013 4 26  -0.35 -9.48 0.0       
    2013 4 27  7.22-10.47 0.0       
    2013 4 28  4.19-10.78 0.0 """ 
#after testing replace 'StringIO(temp)' to 'filename.csv' 

names=['year', 'mont','day','Tmax','Tmin','pcp'] 
colspecs = [(0, 6), (9, 10), (12, 14), (21, 26),(26,32),(34,38)] 
df = pd.read_fwf(StringIO(temp),colspecs=colspecs, names=names, header=0) 
print (df) 
    year mont day Tmax Tmin pcp 
0 2013  4 22 5.09 -10.92 0.0 
1 2013  4 23 2.77 -9.63 0.5 
2 2013  4 24 0.28 -9.90 9.9 
3 2013  4 25 0.76 -6.70 12.2 
4 2013  4 26 -0.35 -9.48 0.0 
5 2013  4 27 7.22 -10.47 0.0 
6 2013  4 28 4.19 -10.78 0.0 
+0

Thx。我認爲'colspecs'應該在大熊貓中設計 – Cobin

+0

是的,當然。 [鏈接](http://pandas.pydata.org/pandas-docs/stable/io.html#files-with-fixed-width-columns) – jezrael