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

引用一个dataframe的单元格值到另一个dataframe时出现NaN问题

Pandas写入单元格值返回NaN问题解决方案

常见原因及对应解决方法

  • 索引不匹配
    pandas赋值时默认会按索引对齐,若你写入的对象是带索引的Series、或目标DataFrame的索引和你指定的赋值位置不匹配,就会自动填充NaN。
    解决:如果是给全列填充同一个余额值,直接传入标量赋值即可:
    target_df['余额'] = 你读取到的单个余额值
    如果是给特定行赋值,用.loc显式指定行位置:
    target_df.loc[目标行的索引值, '余额'] = 你读取到的单个余额值
  • 数据类型不兼容
    如果读取到的余额值带千位分隔符、货币符号等特殊字符,或是字符串格式,而目标DataFrame的余额列预先被设置为数值类型,转换失败就会生成NaN。
    解决:赋值前先清洗转换值的格式:
# 示例:处理带逗号和人民币符号的余额值
raw_balance = 你读取到的单元格内容
clean_balance = float(str(raw_balance).replace('¥','').replace(',','').strip())
# 再写入目标df
target_df['余额'] = clean_balance
  • 链式索引导致赋值失效
    如果你用了df[过滤条件]['余额'] = xxx这类链式赋值写法,pandas可能操作的是原DataFrame的副本而非原对象,写入不会生效,查询时就会返回NaN。
    解决:统一用.loc完成条件赋值:
    target_df.loc[target_df['交易日期'] == '2024-xx-xx', '余额'] = clean_balance

验证方法

赋值后先打印你清洗后的余额值、目标列的赋值结果,确认值没有问题:

print(clean_balance)
print(target_df['余额'].head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:24:01