如何从含字典列表与反斜杠的DataFrame列提取数据并统计?
问题描述

这是DataFrame的第一个元素
需求:获取每个字典对应的不同字典数量或item_id值
问题:这并非标准的dict列表,尝试提取该列表的每个元素时,输出仅会逐个展示所有元素,而非3个独立的列表
解决方法
假设你的DataFrame目标列名为target_col,按以下步骤处理:
- 第一步:转换为标准数据结构
如果你的数据是字符串格式的类字典/列表结构,用ast.literal_eval解析成Python原生结构:
import ast import pandas as pd # 解析列内容为标准列表 df['parsed_data'] = df['target_col'].apply(ast.literal_eval)
- 第二步:拆分独立列表
从解析后的结构中拆分出3个独立列表:
# 拆分出三个子列表 df['sub_list_1'], df['sub_list_2'], df['sub_list_3'] = zip(*df['parsed_data'])
- 第三步:统计字典数量与唯一item_id
- 统计每个子列表的字典数量:
df['dict_count_1'] = df['sub_list_1'].apply(len) df['dict_count_2'] = df['sub_list_2'].apply(len) df['dict_count_3'] = df['sub_list_3'].apply(len)- 统计每个子列表中唯一的
item_id数量:
def count_unique_item_ids(sub_list): return len(set(d.get('item_id') for d in sub_list if d.get('item_id'))) df['unique_item_1'] = df['sub_list_1'].apply(count_unique_item_ids) df['unique_item_2'] = df['sub_list_2'].apply(count_unique_item_ids) df['unique_item_3'] = df['sub_list_3'].apply(count_unique_item_ids)
如果原始数据有格式异常(比如多余的符号、换行),可以先清理字符串再解析:
# 示例:清理多余的换行和空格 df['cleaned_col'] = df['target_col'].replace(r'\n|\s+', '', regex=True) df['parsed_data'] = df['cleaned_col'].apply(ast.literal_eval)
内容的提问来源于stack exchange,提问作者Julio
相关产品推荐
相关产品推荐

