diff --git a/python-package/xgboost/compat.py b/python-package/xgboost/compat.py index 642accb6e..43b2e11b9 100644 --- a/python-package/xgboost/compat.py +++ b/python-package/xgboost/compat.py @@ -33,9 +33,14 @@ except ImportError: # pandas try: from pandas import DataFrame + from pandas import MultiIndex PANDAS_INSTALLED = True except ImportError: + class MultiIndex(object): + """ dummy for pandas.MultiIndex """ + pass + class DataFrame(object): """ dummy for pandas.DataFrame """ pass diff --git a/python-package/xgboost/core.py b/python-package/xgboost/core.py index ca544f6d7..66d470648 100644 --- a/python-package/xgboost/core.py +++ b/python-package/xgboost/core.py @@ -15,7 +15,7 @@ import scipy.sparse from .libpath import find_lib_path -from .compat import STRING_TYPES, PY3, DataFrame, py_str, PANDAS_INSTALLED +from .compat import STRING_TYPES, PY3, DataFrame, MultiIndex, py_str, PANDAS_INSTALLED # c_bst_ulong corresponds to bst_ulong defined in xgboost/c_api.h c_bst_ulong = ctypes.c_uint64 @@ -184,7 +184,7 @@ Did not expect the data types in fields """ raise ValueError(msg + ', '.join(bad_fields)) if feature_names is None: - if hasattr(data.columns, 'to_frame'): # MultiIndex + if isinstance(data.columns, MultiIndex): feature_names = [ ' '.join(map(str, i)) for i in data.columns