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

使用+运算符合并两个DataFrame后返回全NaN值,求解决方案

解决Pandas合并DataFrame后全为NaN的问题

你当前用x + y的方式完全搞错了Pandas的操作逻辑——这个符号是元素级加法,Pandas会严格按照索引对齐两个DataFrame的行,只有索引完全匹配的行才会对应列相加,不匹配的位置就返回NaN。而南、北美数据的索引大概率没有重叠,所以结果全是NaN,这显然不是你要的“合并两个地区数据”的效果。

正确的合并方式(纵向拼接行)

方法1:用pd.concat()拼接

这是Pandas中合并多个DataFrame行的标准方法:

import pandas as pd

x = df.loc[df['continent'] == 'South America']
y = df.loc[df['continent'] == 'North America']
# 纵向拼接两个DataFrame,ignore_index重置索引避免混乱
Americas = pd.concat([x, y], ignore_index=True)

方法2:一步筛选更高效

其实不需要分开取两个地区再合并,直接用isin()筛选符合条件的行即可,代码更简洁高效:

Americas = df.loc[df['continent'].isin(['South America', 'North America'])]

额外说明(如果确实需要元素加法)

如果你真的是想让两个DataFrame相同索引的行做列值相加,而非合并行,可以用add()方法并指定填充值,避免不匹配索引返回NaN:

Americas = x.add(y, fill_value=0)

但根据你的需求描述,这个应该不是你要的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:50:28