You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas分组后将含字符串与列表的列合并为扁平列表的问题

解决方法

你的问题核心是Col2列混合了字符串和列表类型,直接分组打包会把列表当作单个元素存入新列表,需要先统一格式再合并:

  1. 先将Col2的每个元素转为列表格式:
# 把单字符串转成单元素列表,保留原列表结构,同时去掉字符串的单引号
df['Col2'] = df['Col2'].apply(lambda x: x if isinstance(x, list) else [x.strip("'")])
  1. 分组后展开合并嵌套列表:
# 用列表推导式展开所有子列表
result = df.groupby('Col1')['Col2'].apply(lambda x: [item for sublist in x for item in sublist])

执行后得到的结果如下:

Col1
A    ['AD', 'FG', 'LKL']
B           ['FGT']
Name: Col2, dtype: object

如果需要转为DataFrame格式,添加reset_index()即可:

result_df = result.reset_index()

输出的result_df为:

Col1                Col2
0    A  ['AD', 'FG', 'LKL']
1    B           ['FGT']

也可以用链式写法简化操作:

result_df = (df
             .assign(Col2=df['Col2'].apply(lambda x: x if isinstance(x, list) else [x.strip("'")]))
             .groupby('Col1')['Col2']
             .apply(lambda x: sum(x, []))  # sum嵌套列表等价于展开合并
             .reset_index())

关键说明

  • 必须先统一Col2的元素格式,确保每个值都是列表,避免分组时把原列表当作单个元素。
  • sum(x, [])是合并嵌套列表的快捷写法,和列表推导式的效果完全一致。

内容的提问来源于stack exchange,提问作者Zanam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:05:20