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

如何从Pandas DataFrame字典列提取数值并替换NaN为0?

提取DataFrame字典列的数值并替换NaN为0

现有如下Pandas DataFrame:

AB
{'all':44}{'all':16}
NaN{'all':175}

需求是从各列的字典中提取'all'对应的数值,同时把NaN替换为0。你已经能对单个元素用.values()拿到结果,但不知道怎么批量处理整个DataFrame,这里给你两种实用的方法:

方法一:用applymap自定义处理函数

适合需要自定义逻辑的场景,比如键不固定或者需要额外判断的情况:

import pandas as pd

# 构造示例DataFrame(已有数据可跳过此步)
data = {'A': [{'all':44}, None], 'B': [{'all':16}, {'all':175}]}
df = pd.DataFrame(data)

# 定义处理单个元素的函数
def extract_dict_value(x):
    return x['all'] if not pd.isna(x) else 0

# 对整个DataFrame的每个元素应用函数
df_processed = df.applymap(extract_dict_value)

处理后的结果:

AB
4416
0175

方法二:用str.get+fillna快速处理

如果所有字典的键都是固定的'all',这个方法更简洁:

# 对每一列提取字典的'all'值,再把NaN替换为0
df_processed = df.apply(lambda col: col.str.get('all').fillna(0))

col.str.get('all')会自动遍历列中的每个元素,提取字典里的'all'值,原本的NaN位置会保留为NaN,最后用fillna(0)统一替换成0,效果和方法一完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:42:05