我有数据帧
ID url date active_seconds
111 vk.com 12.01.2016 5
111 facebook.com 12.01.2016 4
111 facebook.com 12.01.2016 3
111 twitter.com 12.01.2016 12
222 vk.com 12.01.2016 8
222 twitter.com 12.01.2016 34
111 facebook.com 12.01.2016 5
Run Code Online (Sandbox Code Playgroud)
我需要得到
ID url date active_seconds
111 vk.com 12.01.2016 5
111 facebook.com 12.01.2016 7
111 twitter.com 12.01.2016 12
222 vk.com 12.01.2016 8
222 twitter.com 12.01.2016 34
111 facebook.com 12.01.2016 5
Run Code Online (Sandbox Code Playgroud)
如果我试试
df.groupby(['ID', 'url'])['active_seconds'].sum()
Run Code Online (Sandbox Code Playgroud)
它结合所有的字符串.我该怎么做才能获得理想?
(s != s.shift()).cumsum()是识别连续标识符组的典型方法pd.DataFrame.assign是一种向数据框副本添加新列并链接更多方法的便捷方法pivot_table允许我们重新配置我们的表并聚合args- 这是我的风格偏好,以保持代码更简洁。我将把这些参数传递给pivot_tablevia*argsreset_index* 2 清理并得到最终结果args = ('active_seconds', ['g', 'ID', 'url', 'date'], None, 'sum')
df.assign(g=df.ID.ne(df.ID.shift()).cumsum()).pivot_table(*args) \
.reset_index([1, 2, 3]).reset_index(drop=True)
ID url date active_seconds
0 111 facebook.com 12.01.2016 7
1 111 twitter.com 12.01.2016 12
2 111 vk.com 12.01.2016 5
3 222 twitter.com 12.01.2016 34
4 222 vk.com 12.01.2016 8
5 111 facebook.com 12.01.2016 5
Run Code Online (Sandbox Code Playgroud)