python - 在 Pandas 中计算独特的广告展示次数
问题描述
我正在使用一个相当大的数据框,其中包括三个主要列:
df = pd.DataFrame({
'ad_id': [2441, 102, 133, 102, 102, 2441, 105, 301],
'user_id': [665, 152, 12, 665, 11, 238, 665, 12],
'view_time': ['09/12/2017 10:11', '11/12/2017 10:22', '1/12/2017 10:22', '11/12/2017 10:35', '11/12/2017 13:01', '11/12/2017 14:11', '11/12/2017 14:38', '11/12/2017 14:52'],
})
whereview_time
似乎与 Pandas 兼容datetime
。
我的目标是识别并打印 4 个具有最高唯一视图数量的广告(即,特定用户在 24 小时窗口内的视图,其中在初始唯一视图之后记录的视图不计为唯一),或者,如果失败,则获得nview_time
个非重复(任何给定用户的不同值)观看次数最多的广告。
我尝试使用以下内容:
df = df.groupby(by=['ad_id'], as_index=False).agg({'user_id': pd.Series.nunique, 'view_time': pd.Series.nunique})
但这似乎在计算正确的唯一视图或根据视图计数对ad_id
值进行排序方面几乎没有帮助,无论它可能多么粗略。
解决方案
d = df.assign(
view_time=
pd.to_datetime(df.view_time).dt.date
).drop_duplicates()
d.groupby('ad_id').size().nlargest(4)
推荐阅读
- ios - 我可以选择性地剪辑到边界吗?
- c - WinAPI 中的 GetClipboardViewer 函数有什么用?
- c++ - 传递给 std::variant 的预定义类型列表
- jquery - 尝试使用 asp.net core MVC 通过 AJAX 添加记录;通过 jQuery 传递模型时为空
- jquery - 如何使用jQuery在网页中更改所有超链接末尾的特定字符
- coldfusion - 如何删除/替换 ASCII 码退格
- solr - 如何通过检查当前日期是否在 Solr 中的可用日期范围内来搜索文档
- powerbi - 如何修改 DAX 表达式以填补运行总 Power BI 中的空白
- javascript - 如何在 JavaScript 中纯粹使用 Map 数据类型
- google-api - 使用 google-classroom api 从监护人电子邮件地址查找学生?