pandas.get_dummies转换float64

时间:2018-06-08 19:30:42

标签: python pandas

我在使用tpot之前使用pandas.get_dummies来转换我的一些分类变量。我的问题是,我有一个连续的变量,例如,即使它是一个连续的变量,它也被转换为类别。这似乎并非在所有情况下都会发生,但我无法弄清楚它何时发生。

我测试了以下内容:

pd.isnull(my_dataframe).any()

并且所有类别都表示错误

print(type(features[0,5])) # the time category with my continuous variable

,输出是 <class 'numpy.float64'>

但是当我这样做时

df_dummies=pd.get_dummies(my_dataframe)
df_dummies.columns

它为我的时间特征的每个值创建一列。

像这样:'时间(分钟)_2','时间(分钟)_3',        '时间(分钟)_4','时间(分钟)_5','时间(分钟)_6','时间(分钟)_10',        '时间(分钟)_15','时间(分钟)_16','时间(分钟)_20','时间(分钟)_25',        '时间(分钟)_30'

任何想法在这里可能出错?

1 个答案:

答案 0 :(得分:2)

您的时间类似乎意外地被投射到了某个地方的某个str

import pandas as pd
import numpy as np
from datetime import datetime
df = pd.DataFrame({'foo':np.random.choice([1, 2], 12),
                   'date':pd.date_range(start=datetime.now(),
                                        periods=12, freq='1min'),
                   'baz': np.linspace(0, 1, 12)})
df.dtypes
df_cast = df.copy()
df_cast['date'] = df_cast['date'].astype(str)
df_cast.dtypes

<强>输出

foo      object
date     object
baz     float64
dtype: object

您可以验证pd.get_dummiesdf_cast的行为是否与您遇到的情况一致,并且正确处理floatsints和{{1}在任何字段转换为datetime之前的对象。