scikit-learn-contrib/sklearn-pandas

DataFrameMapper changes columns types when default=None.

开放

#171 创建于 2018年9月11日

 (4 条评论) (3 个反应) (1 位负责人)Python (420 个派生)github user discovery
good first issue

仓库指标

星标
 (2,850 个星标)
PR 合并指标
 (30 天内没有已合并 PR)

描述

When I use DataFrameMapper and set up default=None to transform a column, all other columns types are changed to object. But this does not happen when I have only float and/or int columns

import pandas as pd
import numpy as np
from sklearn_pandas import DataFrameMapper
from sklearn.impute import SimpleImputer


# all numerical columns lead to no error
da = pd.DataFrame({
    'a':[1,3,np.nan],
    'b': [1.2,2,3]})
print(da.dtypes)

aux_imp = DataFrameMapper([
    (['a'], SimpleImputer(strategy='mean'))], 
    df_out=True, default=None)

da = aux_imp.fit_transform(da)
print(da.dtypes)

# if a column is of str it leads to errors
da = pd.DataFrame({
    'a':[1,3,np.nan],
    'b': [1.2,2,3],
    'c':['c', 'c', 'a']
})
print(da.dtypes)

aux_imp = DataFrameMapper(
    [(['a'], SimpleImputer(strategy='mean'))], 
    df_out=True, default=None)

da = aux_imp.fit_transform(da)
print(da.dtypes)

贡献者指南