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

如何使用Pandas删除DataFrame字典列中的指定键值对?

Pandas删除DataFrame字典列指定键值对

问题场景

现有包含time和dic两列的DataFrame,其中dic列的每个元素都是字典,需要删除字典中的'1:00'和'4:00'键值对。原始数据及初始化代码如下:

import pandas as pd
dic={'time':[1685660515,1685689306],
     'dic':[{"0:00":"2", "1:00":"1","2:00":"0","4:00":"0"},
            {"0:00": "0", "1:00": "0", "2:00":"3","4:00":"0" }]}
df= pd.DataFrame(dic)

原始DataFrame:

timedic
1685660515{"0:00": "2", "1:00": "1", "2:00": "0","4:00":"0"}
1685689306{"0:00": "0", "1:00": "0", "2:00":"3","4:00":"0"}

解决方案

方法1:字典推导式结合apply

这是最直观的方法,通过lambda函数遍历每个字典,过滤掉不需要的键:

# 定义需要删除的键集合
keys_to_remove = {'1:00', '4:00'}

# 处理dic列
df['dic'] = df['dic'].apply(lambda x: {k: v for k, v in x.items() if k not in keys_to_remove})

方法2:使用pop安全删除键

如果希望直接修改原字典(而非生成新字典),可以用dict.pop(),通过默认值避免键不存在时报错:

def clean_dictionary(d):
    for key in keys_to_remove:
        d.pop(key, None)  # None表示键不存在时不抛出异常
    return d

df['dic'] = df['dic'].apply(clean_dictionary)

方法3:高效处理大数据量(可选)

当DataFrame行数较多时,map的性能略优于apply,用法类似:

df['dic'] = df['dic'].map(lambda x: {k: v for k, v in x.items() if k not in keys_to_remove})

处理后结果

执行上述任意方法后,df的dic列将只保留指定键:

timedic
1685660515{"0:00": "2", "2:00": "0"}
1685689306{"0:00": "0", "2:00": "3"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:13:18