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
}
这样,你就可以得到一个字典,其中的键是用户和年份的组合,值是该分组的平均值。
【相关推荐】
#取分组第一行
ad_min3 = ad_min2.reset_index(drop=True)
ad_min3 = ad_min3.groupby('Subject').first()
print(ad_min3.shape)
ad_min3.head(10)
筛出99行
筛出99个,和所有病人只取第一个的数量相同!
如果筛选最大值,就把上面的min换成max函数就好了