将Pandas GroupBy对象转换为指定格式DataFrame的技术求助
Pandas GroupBy 转目标DataFrame解决方案
没问题,我来帮你搞定这个GroupBy转DataFrame的事儿!下面分两种最常见的场景给你示例,你可以根据自己的目标格式选对应的方法:
情况1:把每个分组的项拆成单独行(行级展开)
如果你的需求是让每个分组里的每一项都单独占一行,和对应的名称一一对应,用explode方法最方便(Pandas 0.25及以上版本支持,效率也高)。
举个实际例子:
import pandas as pd # 先模拟你的原始数据和GroupBy对象 df = pd.DataFrame({ 'name': ['Alice', 'Alice', 'Bob'], 'item': ['book', 'pen', 'notebook'] }) # 按name分组,把每个组的item聚合成列表 grouped = df.groupby('name')['item'].apply(list) # 转成目标格式:每个item单独一行 result_df = grouped.explode('item').reset_index() print(result_df)
运行后输出的结果:
name item 0 Alice book 1 Alice pen 2 Bob notebook
情况2:把每个分组的项拆成多列(列级扩展)
要是你想把每个分组里的项作为不同的列(比如item_1、item_2这种命名),可以用apply(pd.Series)再给列重命名。
还是用上面的GroupBy对象示例:
# 把分组后的列表转成多列 result_df = grouped.apply(pd.Series).rename(columns=lambda x: f'item_{x+1}') print(result_df)
输出结果会是:
item_1 item_2 name Alice book pen Bob notebook NaN
如果你的GroupBy涉及更复杂的聚合逻辑,或者目标格式有特殊要求(比如指定列名、处理空值等),可以把你的原始数据片段和期望的目标格式告诉我,我再帮你调整代码~
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

