如何在Python DataFrame中按类别将两列合并为嵌套元组列表
按分组合并Pandas列生成元组列表
给定如下DataFrame:
import pandas as pd df = pd.DataFrame({"cat":['a', 'a', 'b', 'c'],"A":[5, 6, 1, 4],"B":[7,8, 12, 5]})
其结构为:
cat A B 0 a 5 7 1 a 6 8 2 b 1 12 3 c 4 5
需求是按cat列分组,将每组对应行的A和B值合并为元组,最终得到嵌套列表[[(5, 7), (6, 8)], [(1, 12)], [(4, 5)]],可以通过以下两种方式实现:
方法一:分组后直接生成元组列表
利用groupby结合apply,对每组的A、B列直接生成元组并收集为列表:
result = df.groupby('cat').apply(lambda x: list(zip(x['A'], x['B']))).tolist() print(result)
groupby('cat'):按cat列的值分组lambda x: list(zip(x['A'], x['B'])):对每组数据,用zip将A和B的对应元素配对成元组,再转为列表.tolist():将分组后的Series对象转换为目标嵌套列表
方法二:先构造元组列再聚合
先为每行生成A和B的元组,再按cat分组聚合为列表:
# 新增列存储每行的A、B元组 df['AB_tuple'] = list(zip(df['A'], df['B'])) # 分组聚合并转成嵌套列表 result = df.groupby('cat')['AB_tuple'].agg(list).tolist() print(result)
这种方式更直观,适合需要保留元组列做后续处理的场景。
内容的提问来源于stack exchange,提问作者Jerry Lin
相关产品推荐
相关产品推荐

