在Pandas中对行分组:将DataFrame的Description转为嵌套列表
实现分组后生成嵌套列表的解决方案
你说得没错,直接用df.groupby('ID')['Description'].apply(list)只会把每个分组的元素拼成一层列表,要得到每个元素都是单元素子列表的嵌套结构,只需要对apply的逻辑做个小调整就行。
具体实现步骤
- 先构造你的示例DataFrame(方便复现):
import pandas as pd df = pd.DataFrame({ 'ID': [1, 1, 1, 2, 2, 3], 'Description': ['A', 'B', 'C', 'A', 'C', 'A'] })
- 使用带lambda的
apply处理分组:
result_df = df.groupby('ID')['Description'].apply(lambda group: [[item] for item in group]).reset_index()
代码解释
这里的lambda group: [[item] for item in group]会遍历每个分组里的Description值,把每个单独的元素(比如"A")包装成一个单元素列表["A"],最后所有单元素列表会被组合成一个大列表,完美匹配你想要的嵌套结构。
输出结果
运行后result_df的内容就是:
ID Description 0 1 [['A'], ['B'], ['C']] 1 2 [['A'], ['C']] 2 3 [['A']]
另外,你也可以用agg方法替代apply,效果完全一致:
result_df = df.groupby('ID')['Description'].agg(lambda x: [[i] for i in x]).reset_index()
内容的提问来源于stack exchange,提问作者Mewtwo
相关产品推荐
相关产品推荐

