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

如何快速从Pandas列的字典值提取生成新列?

高效提取Pandas字典列中值的方案

针对你遇到的apply(lambda)速度慢的问题,推荐以下两种高效实现方式,均为Pandas内置的矢量化/批量处理操作,比Python层面的循环效率高得多:

方法一:使用str.get()(单字段提取最优解)

这是Pandas专门为包含字典/对象的object类型Series设计的矢量化方法,底层经过优化,完全避免了Python循环:

calFilteredDf['startTime'] = calFilteredDf['start'].str.get('dateTime')

对于你的1697行数据集,该方法的执行速度会比apply(lambda)快数倍。

方法二:将字典列转为DataFrame(多字段提取更方便)

如果后续需要提取字典中的多个字段(比如同时取date和dateTime),可以直接把整个字典列展开成结构化DataFrame,再按需提取:

import pandas as pd

# 将start列的所有字典展开为DataFrame
start_struct_df = pd.DataFrame(calFilteredDf['start'].tolist())
# 提取dateTime字段到原DataFrame
calFilteredDf['startTime'] = start_struct_df['dateTime']

这种方式利用了Pandas对列表转DataFrame的高效处理逻辑,同样比apply高效。

补充说明

你之前尝试的calFilteredDf['start']['dateTime']直接赋值无效,是因为calFilteredDf['start']是Series对象而非单个字典,无法直接通过键索引取值,必须用批量处理的方式操作每个元素。

另外,swifter在小数据集上变慢是正常现象——并行处理的初始化开销远超过实际计算耗时,小数据场景下内置矢量化方法是最优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:48:29