Mam obiekt DataFrame pandy o nazwie xiv
, który ma kolumnę int64
pomiarów objętości.Kiedy zastosować (pd.to_numeric) i kiedy astype (np.float64) w python?
In[]: xiv['Volume'].head(5)
Out[]:
0 252000
1 484000
2 62000
3 168000
4 232000
Name: Volume, dtype: int64
Czytałem inne posty (jak this i this), które sugerują następujące rozwiązania. Ale kiedy użyć podejście, nie wydaje się, aby zmienić dtype
z danych podstawowych:
In[]: xiv['Volume'] = pd.to_numeric(xiv['Volume'])
In[]: xiv['Volume'].dtypes
Out[]:
dtype('int64')
albo ...
In[]: xiv['Volume'] = pd.to_numeric(xiv['Volume'])
Out[]: ###omitted for brevity###
In[]: xiv['Volume'].dtypes
Out[]:
dtype('int64')
In[]: xiv['Volume'] = xiv['Volume'].apply(pd.to_numeric)
In[]: xiv['Volume'].dtypes
Out[]:
dtype('int64')
Próbowałem zostały również dzięki czemu osobny pandy Series
i używając metod wymienionych powyżej w tej Serii i ponownie przydzielając obiekt do obiektu , który jest obiektem pandas.core.series.Series
.
Mam jednak znalazł rozwiązanie tego problemu przy użyciu pakietu za numpy
float64
typ - to działa, ale nie wiem dlaczego jest inaczej.
In[]: xiv['Volume'] = xiv['Volume'].astype(np.float64)
In[]: xiv['Volume'].dtypes
Out[]:
dtype('float64')
Może ktoś wyjaśnić, w jaki sposób osiągnąć z biblioteki pandas
co wydaje biblioteka numpy
łatwo zrobić z float64
klasie; to jest, przekonwertuj kolumnę w DataFrame xiv
na float64
w miejscu.
'int64' jest już" numerycznym "dtype. 'to_numeric()' powinno pomóc konwertować ciągi znaków w numeryczne dpy ... – MaxU
cytowany post pokazuje, że 'dtype' zwrócony przez wywołanie' to_numeric' będzie 'float64' ... – d8aninja
Sprawdź to:' pd.to_numeric (pd. Seria (['1', '2', '3'])). Dtype'. Będzie on float64 tylko wtedy, gdy będzie to konieczne: 1. W Serii są/są wartości NaN lub niewymienialne. 2. W serii są pływaki. – MaxU