Pandas如何两次分组

Pandas如何两次分组呢?
比如首先按照用户编号分组
然后再按照年份分组
两次分组后再对分组结果进行处理

另外Pandas第一次分组后如何将每个值赋给一个变量?

你可以使用groupby函数进行多次分组。假设你的数据框架是df,并且你希望首先按照"user_id"列进行分组,然后按照"year"列进行分组,你可以按照以下步骤操作:

python
# 首先按照'user_id'进行分组
grouped_1 = df.groupby('user_id')

# 然后,在每个'user_id'分组中再按照'year'进行分组
grouped_2 = grouped_1.groupby('year')


然后,你可以对每个小分组进行操作。例如,如果你想计算每个年份中每个用户的平均值,你可以这样做:

python
# 遍历每个年份的每个用户分组,计算平均值
for user, year_group in grouped_2:
    print(f"User: {user}")
    for year, group in year_group:
        print(f"\tYear: {year}")
        print(f"\tAverage: {group.mean()}")

另外,Pandas的groupby函数返回的是一个特殊的"groupby"对象,它不是Pandas的DataFrame或Series。你不能直接将每个分组的结果赋给一个变量,但你可以在迭代时对每个分组进行操作。如果你希望得到每个分组的汇总结果(例如,每个分组的平均值),你可以使用groupby的agg方法。例如:

python
# 计算每个分组的结果,并存储在一个字典中
result_dict = {
    (user, year): group.mean() 
    for user, year_group in grouped_2 
    for year, group in year_group
}

这样,你就可以得到一个字典,其中的键是用户和年份的组合,值是该分组的平均值。

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^