如何将pandas.core.groupby.SeriesGroupBy转换为DataFrame?
将SeriesGroupBy转换为DataFrame的几种方法
嘿,我懂你现在的需求啦——你已经把DataFrame按group列完成分组,提取分组后的group列得到了SeriesGroupBy对象,现在想把它转成标准的DataFrame对吧?这里有几种实用方法,你可以根据具体需求来选:
场景1:保留所有原始行的DataFrame
如果你想得到和原数据结构一致、仅包含group列的DataFrame(效果类似直接取df1[['group']]),可以试试这两种方式:
- 利用
obj属性直接获取原始Series,再转成DataFrame:
df_result = g1_1st_column.obj.to_frame()
这个方法最直接,obj是SeriesGroupBy自带的属性,能直接返回分组前的原始Series,一步就能转成DataFrame。
- 遍历分组并合并:
import pandas as pd df_result = pd.concat([group.to_frame() for name, group in g1_1st_column])
这种方式会逐个取出每个分组的Series,转成DataFrame后再用pd.concat合并,适合你需要对每个分组做额外处理的场景。
场景2:每个分组只保留一行的汇总DataFrame
如果你的目标是得到每个分组一行的精简DataFrame(比如每个组的group值唯一),可以用这些方法:
- 取每个组的第一个元素再转成DataFrame:
df_result = g1_1st_column.first().to_frame()
运行后你会得到一个以分组键为索引、包含每个组group值的DataFrame,结果如下:
group group a a b b
- 用聚合函数处理后转成DataFrame:
df_result = g1_1st_column.agg('first').to_frame()
和上面的方法效果一致,agg可以灵活替换成其他聚合逻辑(比如'last'、'unique'),适合你需要定制聚合规则的场景。
另外提一句,如果只是需要原数据的group列作为DataFrame,其实直接用df1[['group']]更高效,但既然你是从SeriesGroupBy对象出发,上面的方法就完全适用啦。
内容的提问来源于stack exchange,提问作者Sean McCarthy
相关产品推荐
相关产品推荐

