Pandas如何从含嵌套列表的列提取所有参与者信息并用***分隔生成新列
首先你需要先确认participants列的数据类型:如果是从CSV读取的默认是字符串格式,需要先转换为Python原生的列表字典结构,之后遍历每条记录里的所有参与方元素拼接内容即可,完整代码如下:
import ast import pandas as pd # 第一步:将字符串格式的嵌套结构转换为Python可识别的列表字典 responses['participants'] = responses['participants'].apply(ast.literal_eval) # 第二步:提取所有参与方的角色,不同参与方用***分隔 responses['Role of Participant(s)'] = responses['participants'].apply( lambda x: '***'.join([', '.join(role['type'] for role in item['roles']) for item in x]) ) # 第三步:提取所有参与方的姓名,不同参与方用***分隔 responses['Name of Participant(s)'] = responses['participants'].apply( lambda x: '***'.join([item['life']['name'] for item in x]) )
逻辑说明
你之前的代码只取了每个列表的第0个元素element[0],所以只能拿到第一条参与方信息。上面的代码会遍历列表里所有的参与方对象,分别提取对应信息后按要求拼接。
如果你的participants列已经是Python列表格式,跳过第一步的类型转换即可。
内容的提问来源于stack exchange,提问作者Shihab Ullah
相关产品推荐
相关产品推荐

