avi*_*vik 6 python machine-learning pandas
我想将我的数据帧的所有非浮点类型列转换为浮点数,有什么方法可以做到.如果我可以在One Go中执行它,那将会很棒.以下是类型
longitude - float64
latitude - float64
housing_median_age - float64
total_rooms - float64
total_bedrooms - object
population - float64
households - float64
median_income - float64
rooms_per_household - float64
category_<1H OCEAN - uint8
category_INLAND - uint8
category_ISLAND - uint8
category_NEAR BAY - uint8
category_NEAR OCEAN - uint8
Run Code Online (Sandbox Code Playgroud)
import pandas as pd
import numpy as np
from sklearn.model_selection import KFold
df = pd.DataFrame(housing)
df['ocean_proximity'] = pd.Categorical(df['ocean_proximity']) #type casting
dfDummies = pd.get_dummies(df['ocean_proximity'], prefix = 'category' )
df = pd.concat([df, dfDummies], axis=1)
print df.head()
housingdata = df
hf = housingdata.drop(['median_house_value','ocean_proximity'], axis=1)
hl = housingdata[['median_house_value']]
hf.fillna(hf.mean,inplace = True)
hl.fillna(hf.mean,inplace = True)
Run Code Online (Sandbox Code Playgroud)
如果您不需要对向下转换或错误处理进行特定控制,则可以使用快速简便的方法df = df.astype(float).
要获得更多控制,您可以使用pd.DataFrame.select_dtypesdtype选择列.然后使用pd.to_numeric列的子集.
建立
df = pd.DataFrame([['656', 341.341, 4535],
['545', 4325.132, 562]],
columns=['col1', 'col2', 'col3'])
print(df.dtypes)
col1 object
col2 float64
col3 int64
dtype: object
Run Code Online (Sandbox Code Playgroud)
解
cols = df.select_dtypes(exclude=['float']).columns
df[cols] = df[cols].apply(pd.to_numeric, downcast='float', errors='coerce')
Run Code Online (Sandbox Code Playgroud)
结果
print(df.dtypes)
col1 float32
col2 float64
col3 float32
dtype: object
print(df)
col1 col2 col3
0 656.0 341.341 4535.0
1 545.0 4325.132 562.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5670 次 |
| 最近记录: |