如何在Python中拆分Pandas DataFrame的嵌套结构列?
解决Pandas DataFrame列拆分问题
步骤1:导入依赖并构造示例数据
先确保已安装pandas,再导入工具并创建与你示例匹配的DataFrame:
import pandas as pd # 构造你提供的示例数据 data = { 'Name1': [[0.1,0.2,0.3], [0.4,0.5,0.6], [0.7,0.8,0.9]], 'Name2': [[{'label': 'Neutral', 'score': 0.60}], [{'label': 'Negative', 'score': 0.60}], [{'label': 'Positive', 'score': 0.60}]] } df = pd.DataFrame(data)
步骤2:拆分Name1列的列表数据
将Name1列中的列表拆分为N1、N2、N3三列,同时保留原Name1列:
# 将列表转为DataFrame,自动拆分出多列 name1_split = pd.DataFrame(df['Name1'].tolist(), index=df.index) # 给拆分后的列重命名 name1_split.columns = ['N1', 'N2', 'N3'] # 把拆分结果和原DataFrame合并 df = pd.concat([df, name1_split], axis=1)
步骤3:拆分Name2列的字典列表数据
Name2列的每个元素是包含单个字典的列表,先提取字典,再拆分为Label和Score列:
# 提取列表里的字典元素 name2_dicts = df['Name2'].str[0] # 将字典转为DataFrame,自动拆分出label和score列 name2_split = pd.DataFrame(name2_dicts.tolist(), index=df.index) # 重命名列以匹配你的期望结果 name2_split.columns = ['Label', 'Score'] # 合并到原DataFrame中 df = pd.concat([df, name2_split], axis=1)
步骤4:调整列顺序(可选)
如果需要和你给出的期望结果列顺序完全一致,可重新排列列:
df = df[['Name1', 'N1', 'N2', 'N3', 'Name2', 'Label', 'Score']]
大型数据集适配说明
以上方法均使用Pandas矢量化操作,完全避开循环,处理数十万条数据时效率很高,不会出现性能瓶颈。
内容的提问来源于stack exchange,提问作者Laurence Bach
相关产品推荐
相关产品推荐

