pandas中有与.groupby相反的“ungroup by”操作吗?
·
问题:pandas中有与.groupby相反的“ungroup by”操作吗?
假设我们采用 pandas 数据框...
name age family
0 john 1 1
1 jason 36 1
2 jane 32 1
3 jack 26 2
4 james 30 2
然后做一个groupby()...
group_df = df.groupby('family')
group_df = group_df.aggregate({'name': name_join, 'age': pd.np.mean})
然后进行一些聚合/汇总操作(在我的示例中,我的函数name_join聚合了名称):
def name_join(list_names, concat='-'):
return concat.join(list_names)
分组摘要输出如下:
age name
family
1 23 john-jason-jane
2 28 jack-james
问题:
有没有一种快速、有效的方法可以从聚合表中获取以下内容?
name age family
0 john 23 1
1 jason 23 1
2 jane 23 1
3 jack 28 2
4 james 28 2
(注意:age列值只是示例,我不在乎在此特定示例中平均后丢失的信息)
我认为我可以做到的方式看起来不太有效:
1.创建空数据框
2.从group_df的每一行,分开名字
-
返回一个数据框,其行数与起始行中的名称一样多
-
将输出附加到空数据框
解答
粗略的等价物是.reset_index(),但将其视为groupby()的“对立面”可能没有帮助。
您正在将一个字符串拆分为多个片段,并保持每个片段与“家庭”的关联。我的这个旧答案可以完成这项工作。
只需先将 'family' 设置为索引列,参考上面的链接,然后在末尾设置reset_index()即可获得您想要的结果。
更多推荐

所有评论(0)