You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas拼接DataFrame时触发NotImplementedError问题求助

Pandas拼接独热编码DataFrame触发NotImplementedError解决方法

问题场景

有一个包含CITY列(存储城市名称)的Pandas DataFrame,先执行独热编码:

dummy_CITY = pd.get_dummies(df['CITY'], drop_first=False)
dummy_CITY.head()

尝试拼接原DataFrame和编码结果时:

df_cat = pd.concat([df, dummy_CITY])

触发NotImplementedError,报错栈如下:

NotImplementedError                       Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_8620/1976427847.py in <module>
----> 1 df_cat = pd.concat([df, dummy_CITY])

~\anaconda3\lib\site-packages\pandas\util\_decorators.py in wrapper(*args, **kwargs)
    309                     stacklevel=stacklevel,
    310                 )
--> 311             return func(*args, **kwargs)
    312 
    313         return wrapper

~\anaconda3\lib\site-packages\pandas\core\reshape\concat.py in concat(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)
    305     )
    306 
--> 307     return op.get_result()
    308 
    309 

~\anaconda3\lib\site-packages\pandas\core\reshape\concat.py in get_result(self)
    530                 mgrs_indexers.append((obj._mgr, indexers))
    531 
--> 532             new_data = concatenate_managers(
    533                 mgrs_indexers, self.new_axes, concat_axis=self.bm_axis, copy=self.copy
    534             )

~\anaconda3\lib\site-packages\pandas\core\internals\concat.py in concatenate_managers(mgrs_indexers, axes, concat_axis, copy)
    224             fastpath = blk.values.dtype == values.dtype
    225         else:
--> 226             values = _concatenate_join_units(join_units, concat_axis, copy=copy)
    227             fastpath = False
    228 

~\anaconda3\lib\site-packages\pandas\core\internals\concat.py in _concatenate_join_units(join_units, concat_axis, copy)
    486 
    487     has_none_blocks = any(unit.block is None for unit in join_units)
--> 488     upcasted_na = _dtype_to_na_value(empty_dtype, has_none_blocks)
    489 
    490     to_concat = [

~\anaconda3\lib\site-packages\pandas\core\internals\concat.py in _dtype_to_na_value(dtype, has_none_blocks)
    546     elif dtype.kind == "O":
    547         return np.nan
--> 548     raise NotImplementedError
    549 
    550 

NotImplementedError: 

已知两个DataFrame行数匹配,预期正常拼接。

问题原因

pd.concat()默认使用axis=0(行方向拼接),会把两个DataFrame的行堆叠在一起。这种情况下,若列结构差异大且存在无法兼容的数据类型,就会触发该报错。而实际需求是列方向拼接,把独热编码的列追加到原DataFrame右侧。

解决方法

方法1:修改concat的axis参数

将axis设置为1,指定按列拼接:

df_cat = pd.concat([df, dummy_CITY], axis=1)

方法2:直接在原DataFrame生成独热编码

使用pd.get_dummies的columns参数直接对原DataFrame的CITY列编码,无需额外拼接步骤:

df_cat = pd.get_dummies(df, columns=['CITY'], drop_first=False, prefix='CITY')

内容的提问来源于stack exchange,提问作者Rajarshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 15:51:53