You need to enable JavaScript to run this app. 如何使用Pandas对列进行两次拆分,提取字段值生成指定新列?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas对列进行两次拆分,提取字段值生成指定新列?

Pandas提取字典列字段实现方案

你当前additional_data列存储的是类字典结构,要提取对应字段首先需要确保列值为可直接读取的Python字典类型,再按需取值即可,具体实现如下:

情况1:additional_data列本身为字典类型

直接通过键取值即可,两种写法可选:

  • 单行批量生成新列
data[['Duration', 'Incoming_Time']] = data['additional_data'].apply(pd.Series)[['duration', 'is_incoming']]
  • 分字段提取逻辑更清晰
data['Duration'] = data['additional_data'].apply(lambda x: x['duration'])
data['Incoming_Time'] = data['additional_data'].apply(lambda x: x['is_incoming'])

情况2:additional_data列为字符串格式的字典

如果是从CSV等文本类文件读入数据,默认会把字典结构识别为字符串,需要先转成字典格式再提取:

import ast

# 先将字符串格式的字典转为Python字典,ast.literal_eval比原生eval更安全
data['additional_data'] = data['additional_data'].apply(ast.literal_eval)
# 再按上述方法提取字段
data[['Duration', 'Incoming_Time']] = data['additional_data'].apply(pd.Series)[['duration', 'is_incoming']]

原代码失败原因说明

你之前写的data["additional_data"] = data["additional_data"].apply(lambda x :",".join(x.split(":")[:-1]))是按冒号分割字符串后取前半部分拼接,完全没有按照字典的键值对应逻辑解析,所以无法拿到目标字段的取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 05:27:03