如何使用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
相关产品推荐
相关产品推荐

