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

如何基于条件从另一DataFrame为含列表的DataFrame添加最小值?

解决Data2匹配Data1添加value列的问题

先还原示例数据:

import pandas as pd

# 构建示例Data1
Data1 = pd.DataFrame({
    'store': [1, 1],
    'value': [24, 28],
    'month': [1, 2]
})

# 构建示例Data2
Data2 = pd.DataFrame({
    'store': [[1,2,3], [2]],
    'month': [1, 2]
})

解决方案

通过自定义函数结合apply实现需求,逻辑清晰易调试:

def get_min_matched_value(row):
    # 筛选同月份、且store在当前行store列表中的Data1记录
    matched_records = Data1[(Data1['month'] == row['month']) & (Data1['store'].isin(row['store']))]
    # 有匹配则取最小value,无匹配返回0
    return matched_records['value'].min() if not matched_records.empty else 0

# 给Data2新增value列
Data2['value'] = Data2.apply(get_min_matched_value, axis=1)

执行后Data2的结果:

storemonthvalue
[1, 2, 3]124
[2]20

补充说明

如果之前用lambda失败,大概率是lambda无法简洁处理空值判断和复杂筛选逻辑,改用自定义函数可以更直观实现逻辑,也方便排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:13:16