如何将含列表的DataFrame转换为合并重复ID的字典?
问题描述
我有一个包含标识符(id)和单元格列表的DataFrame,想要创建一个字典,其中键为标识符,值为DataFrame中对应id的所有元素合并后的列表。标识符可能重复,需要将重复id对应的多个列表合并。
示例输入DataFrame:
id col1 0 a ['val1', 'val2'] 1 b ['val2', 'val3'] 2 c ['val1'] 3 c ['val5', 'val6']
期望输出字典:
{'a': ['val1', 'val2'], 'b': ['val2', 'val3'], 'c': ['val1', 'val5', 'val6']}
解决方案
方法一:使用pandas分组拼接
利用groupby按id分组,通过列表推导式平铺并合并每组的子列表,最后转换为字典:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'id': ['a', 'b', 'c', 'c'], 'col1': [['val1', 'val2'], ['val2', 'val3'], ['val1'], ['val5', 'val6']] }) # 分组处理并生成字典 result = df.groupby('id')['col1'].apply(lambda x: [item for sublist in x for item in sublist]).to_dict() print(result)
方法二:手动遍历构建字典
直接遍历DataFrame的每一行,逐步填充字典,逻辑更直观:
result_dict = {} for _, row in df.iterrows(): current_id = row['id'] current_list = row['col1'] if current_id in result_dict: result_dict[current_id].extend(current_list) else: result_dict[current_id] = current_list.copy() print(result_dict)
内容的提问来源于stack exchange,提问作者Fernando Quintino
相关产品推荐
相关产品推荐

