我正在使用一个相当大的数据框,其中包括三个主要列:
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'],
})
其中view_time
似乎与熊猫datetime
兼容。
我的目标是识别并打印4个具有唯一身份视图数量最多的广告(即,特定用户在24小时窗口中的视图,其中在初始唯一身份视图之后记录的视图不算作唯一身份),或者失败即,获得 n 个广告,这些广告具有最多的非重复(对于任何给定用户,不同的view_time
值)观看次数。
我尝试使用以下内容:
df = df.groupby(by=['ad_id'], as_index=False).agg({'user_id': pd.Series.nunique, 'view_time': pd.Series.nunique})
但是,这似乎在计数正确的唯一视图或基于viewcount排序ad_id
值(不管它有多大)上几乎没有帮助。
答案 0 :(得分:1)
d = df.assign(
view_time=
pd.to_datetime(df.view_time).dt.date
).drop_duplicates()
d.groupby('ad_id').size().nlargest(4)