有没有pandas函数可围绕单列重组织dataframe并统计指定列值的行数?
Python Pandas 实现方案
默认基于你使用的是Python生态的Pandas DataFrame进行操作,假设你的DataFrame变量名为df,存储上映年份的字段名为release_year,你可以替换为你实际的字段名。
- 方案1:使用groupby分组聚合(适合后续需要同时聚合其他字段的场景)
核心逻辑是按年份字段分组后统计每组的条目数:# 统计每年电影数量,as_index=False直接把年份转为普通列,不需要额外reset_index year_count_df = df.groupby('release_year', as_index=False).size() # 重命名数量列,语义更清晰 year_count_df.rename(columns={'size': 'movie_count'}, inplace=True) - 方案2:使用value_counts快速统计(仅需要统计数量时更简洁)
直接对年份字段做值统计,再转为DataFrame结构:# sort=False保持年份原有顺序,如果需要按年份排序可以改为sort=True,或者后续单独排序 year_count_df = df['release_year'].value_counts(sort=False).reset_index(name='movie_count') - 可选操作:按年份升序排序
如果结果需要按年份从早到晚排列,执行以下代码即可:year_count_df.sort_values('release_year', ignore_index=True, inplace=True)
最终输出的year_count_df每行对应唯一的上映年份,movie_count列存储对应年份的电影总数量。如果需要同时聚合其他字段(比如年度平均评分、年度平均票房等),可以在groupby时用agg方法自定义聚合规则,示例如下:
year_agg_df = df.groupby('release_year', as_index=False).agg( movie_count=('movie_id', 'count'), # 统计电影数量,基于唯一的电影id字段 avg_rating=('rating', 'mean'), # 统计年度平均评分 total_box_office=('box_office', 'sum') # 统计年度总票房 )
内容的提问来源于stack exchange,提问作者jzintegral97
相关产品推荐
相关产品推荐

