如何拆分含[]与{}的Pandas DataFrame列?Mongo导出数据处理
解决方案
首先明确核心逻辑:先把Mongo导出的嵌套数据(如果是字符串格式)转成Python原生对象,再根据元素类型(列表/字典)分别提取值拆分到新列。以下是具体步骤:
- 导入依赖库
import pandas as pd import ast
- 转换字符串格式的嵌套数据(按需使用)
如果你的目标列(比如叫mixed_col)存的是类似"[123]"或"{'name':'test'}"的字符串,先转成原生列表/字典:
df['mixed_col'] = df['mixed_col'].apply(ast.literal_eval)
- 定义拆分函数
根据你的预期效果调整逻辑,示例如下:
- 遇到列表时,取第一个元素作为第一列,第二列留空
- 遇到字典时,提取指定键对应的值到两列
def split_mixed_item(item): if isinstance(item, list): # 列表处理:取第一个元素,空列表则返回None return pd.Series([item[0] if item else None, None]) elif isinstance(item, dict): # 字典处理:替换成你实际需要提取的键名 return pd.Series([item.get('key_a'), item.get('key_b')]) else: # 处理空值或其他未知类型 return pd.Series([None, None])
- 应用函数生成新列
# 替换成你需要的新列名 df[['col1', 'col2']] = df['mixed_col'].apply(split_mixed_item)
自定义调整说明
- 若列表是多元素,想拼接成字符串:把列表处理逻辑改成
', '.join(map(str, item)) if item else None - 若字典键名不同,直接替换
item.get()里的键即可 - 遇到嵌套结构(比如列表里套字典),可在函数里追加类型判断(比如
isinstance(item[0], dict))进一步处理
内容的提问来源于stack exchange,提问作者user22109889
相关产品推荐
相关产品推荐

