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

如何用Pandas对比组内数据并返回布尔值?组内日期匹配查询

Got it,这个需求咱们用Pandas的分组+自定义函数就能轻松搞定,我给你拆解一下步骤,保证清晰易懂:

Pandas分组匹配指定行并返回结果

1. 编写分组处理的自定义函数

我们需要给每个分组单独做判断:先拿到分组首行的end_date,再找组内begin_date等于这个值的第一行,返回它的type;如果没找到匹配项,就返回'non-existent'。

代码实现如下:

def get_matching_type(group):
    # 获取当前分组第一行的end_date作为目标日期
    target_date = group.iloc[0]['end_date']
    # 筛选出组内begin_date等于目标日期的行
    matched_rows = group[group['begin_date'] == target_date]
    # 返回结果:有匹配则取第一个行的type,无匹配返回指定字符串
    return matched_rows.iloc[0]['type'] if not matched_rows.empty else 'non-existent'

2. 分组应用函数得到结果

接下来对原DataFrame按ID分组,把上面的函数应用进去即可:

# 假设你的数据存储在变量df中
result_series = df.groupby('ID').apply(get_matching_type)

这时候result_series是一个Series,索引为ID,值就是每个ID分组对应的匹配结果。用你给出的示例数据测试的话,ID=1的结果就是Superhero,完全符合预期。

可选:将结果合并回原DataFrame

如果想让原表的每一行都带上这个匹配结果,直接用map映射即可:

df['matched_type'] = df['ID'].map(result_series)

这样原DataFrame会新增一列matched_type,所有同ID的行都会显示对应的匹配结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:38:24