如何拆分DataFrame中的列表行并新增行?
拆分DataFrame中的列表类型字符串行并展开成多行
实现步骤
- 解析字符串为Python对象:使用
ast.literal_eval将列中的字符串格式数据转换为真实的列表或字典对象,规避直接用eval带来的安全风险。 - 统一格式为列表:将单个字典对象包装成列表,确保所有数据格式一致,方便后续拆分操作。
- 拆分列表为多行:借助Pandas的
explode方法,把列表中的每个元素拆分为单独的行。
完整代码
import pandas as pd import ast # 原始DataFrame定义 data = [ "[{'name': 'xxx', 'admin-status': 'up'}, {'name': 'zzz', 'admin-status': 'down'}]", "{'name': 'yyy', 'admin-status': 'up'}" ] df = pd.DataFrame(data, columns=['data']) # 解析字符串为Python对象 df['data'] = df['data'].apply(ast.literal_eval) # 统一格式:单个字典转为列表 df['data'] = df['data'].apply(lambda x: x if isinstance(x, list) else [x]) # 拆分列表为多行 result_df = df.explode('data').reset_index(drop=True) # 输出结果 print(result_df)
运行结果
data 0 {'name': 'xxx', 'admin-status': 'up'} 1 {'name': 'zzz', 'admin-status': 'down'} 2 {'name': 'yyy', 'admin-status': 'up'}
如果需要将字典拆分为独立列,可追加以下代码:
result_df = result_df['data'].apply(pd.Series)
此时输出会变为:
name admin-status 0 xxx up 1 zzz down 2 yyy up
内容的提问来源于stack exchange,提问作者Lucas Tornike
相关产品推荐
相关产品推荐

