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

如何计算Pandas含字典的Age列最小值并处理空值?

解决Pandas DataFrame中字典列取值及空值处理问题

没问题,我来帮你搞定这个数据处理需求!针对你提到的两种情况——将字典列替换为指定键的最小值、处理空值,我整理了清晰的解决方案:

1. 先构造示例DataFrame

首先我们先复现你的原始数据(包含A4的空值),方便直接测试:

import pandas as pd

data = {
    'Category': ['A1', 'A2', 'A3', 'A4'],
    'Data': [30, 20, 20, 20],
    'Age': [
        {'Age1_Set': 25.6, 'WIndex': 343.3, 'Age2_Set': 22.6},
        {'Age1_Set': 35.2, 'WIndex': 343.3, 'Age2_Set': 42.1},
        {'Age1_Set': 26.5, 'WIndex': 343.3, 'Age2_Set': 11.1},
        None  # 空值记录
    ]
}

df = pd.DataFrame(data)

2. 核心处理逻辑

我们可以用apply函数遍历Age列的每个元素,结合条件判断实现需求:

简洁版(基础场景)

如果确定所有非空的Age值都是包含Age1_Set和Age2_Set的字典,可以直接用lambda表达式:

df['Age'] = df['Age'].apply(
    lambda x: min(x['Age1_Set'], x['Age2_Set']) if x is not None else pd.NA
)

这里pd.NA是Pandas推荐的空值表示,你也可以替换成None、0或者其他你需要的默认值。

健壮版(兼容缺失键的情况)

如果担心部分字典可能缺少Age1_Set或Age2_Set键,可以加异常处理增强鲁棒性:

def get_min_age(age_item):
    if age_item is None:
        return pd.NA
    try:
        return min(age_item['Age1_Set'], age_item['Age2_Set'])
    except KeyError:
        # 遇到缺失键时返回空值或自定义值
        return pd.NA

df['Age'] = df['Age'].apply(get_min_age)

3. 最终输出结果

处理后你的DataFrame会变成:

CategoryDataAge
A13022.6
A22035.2
A32011.1
A420

这样就完美实现了你要的效果,既替换了字典为指定值的最小值,也妥善处理了空值~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:57:36