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

DataFrame合并空值问题求助:分类列与缩放列拼接异常

问题根源与排查解决思路

核心问题

你遇到的空值问题是**pd.concat默认按行拼接(axis=0)**导致的:

  • 未指定axis=1时,pandas会把categorical_columns_df和scaled_df按行堆叠,而非按列合并。前半部分行只保留分类列的值,缩放列自然为空;后半部分行只保留缩放列的值,分类列为空。
  • 另外你写的dfs_to_concat[categorical_columns_df]是错误的列表构造方式,正确操作是将两个DataFrame放入同一个列表中。

修正代码

直接指定axis=1按列合并,同时修正列表构造:

# 正确构造待合并的DataFrame列表
dfs_to_concat = [categorical_columns_df, scaled_df]
# 按列合并(axis=1是关键)
new_df = pd.concat(dfs_to_concat, axis=1)

如果存在索引不匹配的情况(即使行数一致,索引值可能不同),可先重置索引确保对齐:

# 重置索引,丢弃原索引避免干扰
categorical_columns_df = categorical_columns_df.reset_index(drop=True)
scaled_df = scaled_df.reset_index(drop=True)
# 再按列合并
new_df = pd.concat([categorical_columns_df, scaled_df], axis=1)

排查思路

  1. 检查pd.concat的axis参数:默认axis=0是行拼接,按列合并必须显式指定axis=1。
  2. 验证列表构造是否正确:确保dfs_to_concat是包含两个DataFrame的列表,而非错误的索引操作。
  3. 确认索引对齐情况:用categorical_columns_df.index和scaled_df.index查看索引是否一致,不一致时重置索引即可。
  4. 核对行数一致性:执行len(categorical_columns_df)和len(scaled_df),确认两者行数完全相同。
  5. 检查join参数:默认join='outer'会保留所有列,若只需要重叠列可设为join='inner',但此问题核心不在此。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:41:13