使用+运算符合并两个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
相关产品推荐
相关产品推荐

