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

合并两个DataFrame时出现大量NaN值的解决方法

DataFrame合并后出现大量NaN的解决方法

合并后出现大量NaN的核心原因是两个DataFrame的列名不匹配,pd.concat会按列名对齐数据,列名不存在的位置会自动填充NaN。以下是具体排查和解决步骤:

1. 检查列名差异

先确认两个DataFrame的列名是否完全一致,包括大小写、空格、拼写:

print("dataset2列名:", dataset2.columns.tolist())
print("df_combinec列名:", df_combinec.columns.tolist())

2. 统一列名

根据列名差异的情况,选择对应方式修正:

  • 如果是大小写/空格问题,批量标准化:
    # 转为小写并去除首尾空格
    dataset2.columns = dataset2.columns.str.lower().str.strip()
    df_combinec.columns = df_combinec.columns.str.lower().str.strip()
    
  • 如果是列名含义相同但命名不同,手动映射重命名:
    # 示例:将df_combinec的列名映射为和dataset2一致
    df_combinec.rename(
        columns={"用户ID": "user_id", "交易金额": "transaction_amount"},
        inplace=True
    )
    

3. 修正reset_index的使用

你之前的reset_index没有重新赋值,原DataFrame的索引并未改变,需要修改为:

dataset2 = dataset2.reset_index(drop=True)
df_combinec = df_combinec.reset_index(drop=True)

4. 重新执行合并

确认列名一致后,重新执行合并操作:

comb_data = pd.concat([dataset2, df_combinec], ignore_index=True)

额外检查(可选)

如果仍有NaN,检查对应列的数据类型是否一致,比如同一列一个是数值型一个是字符串型,可能导致数据无法对齐:

print("dataset2数据类型:\n", dataset2.dtypes)
print("df_combinec数据类型:\n", df_combinec.dtypes)
# 转换类型示例
df_combinec["transaction_amount"] = df_combinec["transaction_amount"].astype(float)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:25:31