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

如何将含字典格式字符串的Zoom API导出TXT转为结构化DataFrame

处理Zoom API导出TXT中registrants字符串列的结构化方案

一、修正数据读取逻辑

原代码用sep=" "会拆分registrants字段内的空格,导致数据错位。改用正则匹配引号前的空格作为分隔符,确保第四个字段完整保留:

import pandas as pd

# 读取文件,精准分隔字段
df = pd.read_csv(
    "registrados111.txt",
    sep=r'\s+(?=")',  # 匹配引号前的空格作为分隔符
    engine='python',
    header=None,
    names=["page_size", "total_records", "next_page_token", "registrants"]
)

# 移除registrants字段首尾的双引号
df['registrants'] = df['registrants'].str.strip('"')

二、将字符串转换为字典对象

registrants列是单引号格式的字典字符串,无法用json.loads直接解析,用ast.literal_eval可安全转换为字典:

import ast

# 解析字符串为字典,兼容异常情况
def parse_registrant(s):
    try:
        return ast.literal_eval(s)
    except Exception:
        return None

df['registrants_dict'] = df['registrants'].apply(parse_registrant)

# 过滤解析失败的无效记录(可选)
df = df.dropna(subset=['registrants_dict'])

三、展开字典列为结构化DataFrame

用pd.json_normalize将字典列拆分为多列,再与原表其他字段合并:

# 展开字典列到多字段
registrants_expanded = pd.json_normalize(df['registrants_dict'])

# 合并原表基础字段与展开后的结构化字段
final_df = pd.concat([df[["page_size", "total_records", "next_page_token"]], registrants_expanded], axis=1)

# 查看处理结果
final_df.head()

补充说明

  • 若registrants包含嵌套字典(如custom_fields),json_normalize会自动将嵌套字段展开为parent.child格式的列名
  • 6000+条记录的场景下,ast.literal_eval的处理效率完全够用
  • 可根据实际数据调整parse_registrant的异常逻辑,适配特殊格式的记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:35:42