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

Pandas中添加全球数据至DataFrame时出现NaN值问题求助

问题诊断与修复

你的代码出现NaN的原因很明确,同时还有索引对齐的潜在问题,以下是具体分析和修复方案:

核心错误

  1. 赋值对象错误:你试图添加全球用户数据,但代码里给total_users_ww列赋值的是美国数据的total_users(fb_us_data['total_users']),完全没用到提取好的fb_ww_data。
  2. 索引不匹配风险:即使修正赋值对象,如果fb_ww_data和fb_intl_data的索引(或日期)不完全对应,Pandas的自动索引对齐会导致不匹配的行出现NaN。

修复代码

推荐方案:按app_id和date合并数据

这种方式能确保数据严格按日期和应用ID匹配,避免索引问题:

fb_us_data = us_data[us_data.app_id == fb_key]
fb_ww_data = ww_data[ww_data.app_id == fb_key]

# 合并美国与全球数据,自动对齐日期和应用ID
fb_intl_data = fb_us_data[["app_id", "date", "total_users"]].merge(
    fb_ww_data[["app_id", "date", "total_users"]],
    on=["app_id", "date"],
    suffixes=("_us", "_ww")  # 给重复列名加后缀区分
)

print(fb_intl_data)

备选方案:重置索引后直接赋值

如果能确认fb_us_data和fb_ww_data的日期顺序、行数完全一致,可以重置索引消除对齐问题:

fb_us_data = us_data[us_data.app_id == fb_key].reset_index(drop=True)
fb_ww_data = ww_data[ww_data.app_id == fb_key].reset_index(drop=True)

fb_intl_data = fb_us_data[["app_id", "date"]]
fb_intl_data["total_users_us"] = fb_us_data["total_users"]
# 修正为使用全球数据列
fb_intl_data["total_users_ww"] = fb_ww_data["total_users"]

print(fb_intl_data)

额外排查

如果修复后仍有NaN,检查以下几点:

  • 确认fb_ww_data不为空:执行print(fb_ww_data)看是否有对应fb_key的数据
  • 检查日期格式:两个数据集的date列是否为相同格式(如是否都是datetime类型,无时区差异)
  • 检查数据完整性:是否存在部分日期在全球数据集中缺失,可通过fb_ww_data.date.isin(fb_us_data.date).value_counts()查看匹配情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:05:19