如何使用Pandas展开GroupBy表格并重复行数据
实现分组DataFrame展开为非分组形式的最优方法
如果你的目标是保持原有列结构,同时让分组后的行按需求重复展开,以下两种场景的最优方案供你参考:
场景1:已知每个分组的重复次数
如果已经明确每个分组需要重复的行数,直接用repeat方法结合索引操作就能快速实现:
import pandas as pd # 假设你的分组后数据是grouped_df,包含重复次数列Repeat grouped_df = pd.DataFrame({ "Group": ["A", "B"], "Value": [10, 20], "Repeat": [3, 2] # 每个分组要重复的次数 }) # 展开行并清理临时列 expanded_df = grouped_df.loc[grouped_df.index.repeat(grouped_df["Repeat"])] expanded_df = expanded_df.drop("Repeat", axis=1).reset_index(drop=True)
场景2:基于原始数据还原(用聚合值填充原始行)
如果是从原始数据分组聚合后,想要回到原始行结构但保留聚合结果,用merge关联原始分组键是最稳妥的方式,完全不会改变原有列结构:
import pandas as pd # 原始数据 raw_df = pd.DataFrame({ "Group": ["A", "A", "A", "B", "B"], "OtherCol": [1, 2, 3, 4, 5] }) # 分组聚合得到grouped_df grouped_df = raw_df.groupby("Group")["OtherCol"].sum().reset_index(name="TotalValue") # 关联原始分组键,实现行重复填充 expanded_df = raw_df[["Group"]].merge(grouped_df, on="Group")
这两种方法都比unstack更贴合你的需求——全程保持列结构不变,操作高效且逻辑清晰。
内容的提问来源于stack exchange,提问作者hagop
相关产品推荐
相关产品推荐

