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

Python Pandas:字典中UPS_HEAD/UPS_DRV<95时提取q_start值

Pandas筛选需求实现

需求说明

当DataFrame的summary字段(字典类型)中,UPS_HEAD或UPS_DRV的数值小于95时,提取对应行的q_start列值。

原始DataFrame定义

import pandas as pd

rows_list = [
    {'q_end': '2022-06-24 15:00:00', 'q_start': '2022-06-24 15:59:59', 'summary': {'UPS_HEAD': 84, 'UPS_DRV': 84, 'ALLOW_AP': 18 }},
    {'q_end': '2022-06-24 14:00:00', 'q_start': '2022-06-24 14:59:59', 'summary': {'UPS_HEAD': 95, 'UPS_DRV': 95, 'ALLOW_AP': 18 }},
    {'q_end': '2022-06-24 13:00:00', 'q_start': '2022-06-24 13:59:59', 'summary': {'UPS_HEAD': 91, 'UPS_DRV': 91, 'ALLOW_AP': 18 }}
]
df = pd.DataFrame(rows_list)

期望输出(注:原描述的输出为q_end值,若按需求提取q_start则结果如下)

output = ['2022-06-24 15:59:59', '2022-06-24 13:59:59']

实现方法

方法1:行级lambda判断

通过apply快速遍历每行的summary字典,直接筛选符合条件的行并提取目标列:

output = df[df['summary'].apply(lambda x: x['UPS_HEAD'] < 95 or x['UPS_DRV'] < 95)]['q_start'].tolist()

方法2:展开字典字段后筛选

将summary字典展开为独立列,再用常规的DataFrame条件筛选,适合需复用字典内字段的场景:

# 展开summary字典为单独列
summary_cols = df['summary'].apply(pd.Series)
# 合并后筛选
merged_df = pd.concat([df, summary_cols], axis=1)
output = merged_df[(merged_df['UPS_HEAD'] < 95) | (merged_df['UPS_DRV'] < 95)]['q_start'].tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:45:43