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

使用Pandas合并两个CSV文件结果异常,出现大量NaN值求助

问题原因

你用pd.concat()做的是纵向行堆叠,它会把两个表格的行上下拼接。因为两个CSV的列大部分不重合,对应不上的列就会自动填充NaN,所以第一个CSV的行里第二个CSV的列全是NaN,第二个CSV的行里第一个CSV的列也会是NaN,最终数据分成上下两段。

正确合并方法

两个CSV是通过ID关联的(第一个的ProductID对应第二个的ID),应该用pd.merge()做关联合并,代码如下:

import pandas as pd

# 分别读取两个CSV
df1 = pd.read_csv('data1.csv')
df2 = pd.read_csv('data2.csv')

# 按对应ID字段合并,这里用inner模式只保留两边都有的ID数据
merged_df = pd.merge(df1, df2, left_on='ProductID', right_on='ID', how='inner')

# 查看合并结果
print(merged_df)

关键参数说明

  • left_on='ProductID':指定第一个表的关联列
  • right_on='ID':指定第二个表的关联列
  • how参数可选:
    • inner:只保留两边能匹配到ID的行
    • left:保留第一个表的所有行,匹配不到的列用NaN填充
    • right:保留第二个表的所有行,匹配不到的列用NaN填充
    • outer:保留所有行,匹配不到的列用NaN填充
补充说明

你当前的concat代码输出里,前两行是data1的数据,后面还会跟着data2的数据,只是data2的行里ProductID、ProductName、ProductBrand这些列都会是NaN,这是纵向拼接的正常结果,但不是你想要的关联合并效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:46:05