Python Pandas如何按user_mode列筛选免费匿名用户分组求和计算视频最大播放时长
代码调整方案
你只需要在分组聚合前,先对user_mode列做条件筛选,匹配免费、匿名两类用户即可,调整后的完整代码如下:
import pandas as pd video = pd.read_csv('video_views.csv') product = pd.read_csv('products.csv') vv_with_product = pd.merge(video, product, on = 'pd_id', how = 'outer') # 新增筛选步骤:仅保留免费用户、匿名用户的记录 # 如果你的user_mode字段值为英文,可替换为 ['free', 'anonymous'] 对应取值 filtered_vv = vv_with_product[vv_with_product['user_mode'].isin(['免费用户', '匿名用户'])] # 按剧集名称分组,求和两类用户的总vv_cnt total_vv = filtered_vv.groupby('series_name')['vv_cnt'].sum() # 按vv降序排序 sorted_vv = total_vv.sort_values(ascending=False) # 计算最大播放时长:假设单次vv对应平均播放时长为t秒,乘以总vv即可 # t可替换为实际的单播放平均/最大时长参数 max_play_duration = sorted_vv * t print(sorted_vv) print(max_play_duration)
调整说明
- 新增
isin()条件过滤逻辑,精准匹配你需要的两类用户,排除其他用户类型的干扰 - 若你不需要分用户类型统计结果,无需将
user_mode放入分组维度,直接按剧集维度聚合即可得到两类用户的总播放量 - 如果需要区分不同用户类型的统计结果,可将分组参数改为
groupby(['series_name', 'user_mode'])
内容的提问来源于stack exchange,提问作者Bellasere
相关产品推荐
相关产品推荐

