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

如何基于列表字典列的status值过滤Pandas DataFrame

过滤包含指定status的DataFrame行

要实现仅保留colexample列中存在status为sent或other的行,可以通过以下方式完成:

核心代码

filtered_df = df[df['colexample'].apply(lambda lst: any(d['status'] in {'sent', 'other'} for d in lst))]

代码说明

  • df['colexample'].apply(...):遍历colexample列的每一个字典列表元素
  • any(d['status'] in {'sent', 'other'} for d in lst):检查当前列表中是否存在至少一个字典的status属于目标集合,只要满足一个就返回True
  • 最终通过布尔索引筛选出所有符合条件的行

示例验证

假设原DataFrame有两行数据:

import pandas as pd
import datetime

data = [
    {
        'colexample': [
            {'status': 'married', 'date': datetime.datetime(2022, 10, 1, 6, 27, 31, 118000)},
            {'status': 'divorced', 'date': datetime.datetime(2022, 10, 1, 6, 27, 52, 47000)},
            {'status': 'sent', 'date': datetime.datetime(2022, 10, 1, 6, 27, 52, 47000)},
            {'status': 'other', 'date': datetime.datetime(2022, 10, 1, 6, 27, 52, 47000)}
        ]
    },
    {
        'colexample': [
            {'status': 'married', 'date': datetime.datetime(2022, 10, 2, 6, 27, 31)},
            {'status': 'divorced', 'date': datetime.datetime(2022, 10, 2, 6, 27, 52)}
        ]
    }
]

df = pd.DataFrame(data)
filtered_df = df[df['colexample'].apply(lambda lst: any(d['status'] in {'sent', 'other'} for d in lst))]
print(filtered_df)

运行后只会保留第一行数据,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:50:23