2017-02-14 12 views
1

큰 데이터 프레임, 1 백만 개의 행과 9 개의 열과 몇 개의 열에 데이터가 누락 된 일부 행이 있습니다.Pandas Dataframe 개체 유형

dat = pd.read_table('file path', delimiter = ';') 

I  z  Sp S  B  B/T  r  gf  k 
0  0.0303 2 0.606 0.31  0.04 0.23  0.03 0.38 
1  0.0779 2    0.00  0.00 0.05  0.01 0.00 

숫자 값이있는 경우에도 처음 몇 개의 열이 문자열로 읽혀지고 마지막 몇 개는 NaN으로 읽혀집니다. dtype = 'float64'를 포함 시키면 얻을 수 있습니다.

ValueError: could not convert string to float: 

이 문제를 해결하는 데 도움이 되셨습니까?

+0

모든 값 플로트 번호를? – Ika8

+0

@ Ika8 예 그들은 – Cmf55

+0

으로 시도합니다. dtype = 개체로 시도하십시오. – Ika8

답변

1

당신은 정규식에 의해 replace을 사용할 수 있습니다 - 하나 whitespacesNaN 더 후 read_tableNaN로 변환 데이터 float

빈 문자열로 캐스팅.

df = df.replace({'\s+':np.nan}, regex=True).astype(float) 
print (df) 
    I  z Sp  S  B B/T  r gf  k 
0 0.0 0.0303 2.0 0.606 0.31 0.04 0.23 0.03 0.38 
1 1.0 0.0779 2.0 NaN 0.00 0.00 0.05 0.01 0.00 

데이터 apply 함께 사용 가능한 to_numeric이다 NaN로 대체 될 필요가 어떤 문자열이 포함 된 경우 :

df = df.apply(lambda x: pd.to_numeric(x, errors='coerce')) 
print (df) 
    I  z Sp  S  B B/T  r gf  k 
0 0 0.0303 2 0.606 0.31 0.04 0.23 0.03 0.38 
1 1 0.0779 2 NaN 0.00 0.00 0.05 0.01 0.00 
+0

어떻게 작동합니까? – jezrael

+0

마지막 세 개의 열은 모두 값이있을 때 NaN으로 모두 읽혀집니다. 그것은 처음 6 동안 작동합니다. – Cmf55

+0

'df.replace ({ '\ s +': np.nan}, regex = True) .astype (float)'또는'to_numeric' 솔루션을 사용합니까? 마지막 3 열의 데이터가 숫자입니까? – jezrael