Я хочу изменить dtype некоторых столбцов в моем DataFrame через iloc.Но когда я пытаюсь это сделать, dtype не меняется (он все еще объект):
import pandas as pd
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
df = pd.read_csv('iris.csv', names=names, header=None)
df = df[1:]
In [11]: df.head()
Out[11]:
sepal-length sepal-width petal-length petal-width class
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
In [12]: df.iloc[:,:-1] = df.iloc[:,:-1].astype(float)
# No Error
In [13]: df.dtypes # still object dtype
Out[13]:
sepal-length object
sepal-width object
petal-length object
petal-width object
class object
dtype: object
Примечание: я могу сделать это без iloc, но это слишком долго:
df[['sepal-length', 'sepal-width', 'petal-length', 'petal-width']] = df[['sepal-length', 'sepal-width', 'petal-length', 'petal-width']].astype(float)