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

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

问题描述

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
    1. 统计每个子列表的字典数量:
    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)
    
    1. 统计每个子列表中唯一的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:50:39