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

如何基于指定键列表从defaultdict生成Pandas DataFrame

实现方法:保留指定键对应的DataFrame条目

这里有两种实用的实现方式,按需选择:

方法1:先过滤字典再转DataFrame(更高效)

先从defaultdict里筛选出目标键对应的键值对,再转换成DataFrame,避免生成全量数据后再过滤的开销:

from collections import defaultdict
import pandas as pd

# 示例数据
my_defaultdict = defaultdict(float, {'62007459': 0, '68092193': 0, '40224646': 120.92999999999999})
lcodes = ['40224646','60000216']

# 筛选出lcodes中存在的键值对
filtered_items = {k: v for k, v in my_defaultdict.items() if k in lcodes}
# 转换为DataFrame
filtered_df = pd.DataFrame(filtered_items.items(), columns=['code', 'value'])

方法2:先生成全量DataFrame再筛选

如果已经生成了全量DataFrame,直接用isin()方法过滤行即可:

# 先生成全量DataFrame
full_df = pd.DataFrame(my_defaultdict.items(), columns=['code', 'value'])
# 只保留code列在lcodes中的条目
filtered_df = full_df[full_df['code'].isin(lcodes)]

额外需求:保留lcodes中所有键(包括字典里不存在的)

如果需要把lcodes里的所有键都保留,字典里没有的键填充默认值(比如0),可以用reindex:

full_df = pd.DataFrame(my_defaultdict.items(), columns=['code', 'value']).set_index('code')
# 按lcodes重新索引,不存在的键填充0
filtered_df = full_df.reindex(lcodes, fill_value=0).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:17:08