Python中文
首页
教程
问答
标签
搜索
登录
注册
如何在GroupBy中“折叠”符合逻辑条件的行
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有这样一个数据帧:</p> <pre><code>In [134]: df Out[134]: A ID3 DATETIME 0 BRT-481028 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 13:43:27 1 BRT-481054 4a57ed0b02fa357bf3c51cc9460e8d96 2014-10-08 14:26:19 2 BRT-481076 1a682034f8cbc542f36e46215635da9a 2014-10-08 14:29:01 3 BRT-481023 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 18:39:34 4 BRT-481023 f88g8d7sds799asde83b2523944p9r78 2014-10-08 18:40:18 5 BRT-481033 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 18:44:30 6 BRT-481032 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 18:46:00 7 BRT-481037 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 18:52:15 8 BRT-481046 db959faf023e5df33032db4808882f0c 2014-10-08 18:59:59 9 BRT-481053 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 19:17:48 10 BRT-481065 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 19:21:38 </code></pre> <p>每一行表示由<em>用户</em>触发的<strong><em>事件</em></strong>——为了本例,通过<em><code>df['ID3']</code></em>中的值标识。每个事件都有很多附加属性,但我已经删掉了其他所有属性</p> <p>对于我尝试构建的内容,我只需要为每个用户和每5分钟<em>滚动</em>周期保留一个事件。在同一时间段内,由同一个用户执行的所有其他事件都只是干扰其他逻辑的噪声,这些逻辑将进一步执行,因此应该被丢弃。因此,我需要为每个用户保留最多一条记录,滚动周期为5分钟。更具体地说,我需要保持最新的记录在任何数量的记录在同一时间段</p> <p>所需的输出如下所示:</p> <pre><code> A ID3 DATETIME 0 BRT-481028 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 13:43:27 1 BRT-481054 4a57ed0b02fa357bf3c51cc9460e8d96 2014-10-08 14:26:19 2 BRT-481076 1a682034f8cbc542f36e46215635da9a 2014-10-08 14:29:01 4 BRT-481023 f88g8d7sds799asde83b2523944p9r78 2014-10-08 18:40:18 6 BRT-481032 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 18:46:00 7 BRT-481037 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 18:52:15 8 BRT-481046 db959faf023e5df33032db4808882f0c 2014-10-08 18:59:59 10 BRT-481065 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 19:21:38 </code></pre> <p>上面第<code>[3,5,9]</code>行上的记录已被丢弃,因为它们满足上述条件。另外,请注意行<code>3</code>和<code>6</code>之间的时间间隔是如何大于5分钟的,但是,由于同时创建了记录<code>5</code>,因此<em>滚动</em>窗口使得这些记录被丢弃</p> <p>还要注意,行<code>4</code>上的记录保持不变,因为它与不同的用户相关联</p> <p>编辑</p> <p>现在我更进一步了,我用<code>diff()</code>和<code>groupby()</code>来理解这一点:</p> <pre><code>In [309]: df['diff'] = df.sort_values(by='DATETIME').groupby('ID3')['DATETIME'].transform(lambda x: x.diff()) In [310]: df Out[310]: A ID3 DATETIME \ 0 BRT-481028 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 13:43:27 1 BRT-481054 4a57ed0b02fa357bf3c51cc9460e8d96 2014-10-08 14:26:19 2 BRT-481076 1a682034f8cbc542f36e46215635da9a 2014-10-08 14:29:01 3 BRT-481023 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 18:39:34 4 BRT-481023 f88g8d7sds799asde83b2523944p9r78 2014-10-08 18:40:18 5 BRT-481033 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 18:44:30 6 BRT-481032 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 18:46:00 7 BRT-481037 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 18:52:15 8 BRT-481046 db959faf023e5df33032db4808882f0c 2014-10-08 18:59:59 9 BRT-481053 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 19:17:48 10 BRT-481065 b76cd912ffcb97e21de83b252391b2a0 2014-10-08 19:21:38 diff 0 NaT 1 NaT 2 NaT 3 1970-01-01 04:56:07 4 NaT 5 1970-01-01 00:04:56 6 1970-01-01 00:01:30 7 1970-01-01 00:06:15 8 NaT 9 1970-01-01 00:25:33 10 1970-01-01 00:03:50 </code></pre> <p>我似乎无法获得差异的秒数。我尝试过:</p> <pre><code>>> findTheDiff = lambda x: x.diff().astype(np.int64) </code></pre> <p>在上面的<code>lambda</code>的地方,但这并没有什么区别</p> <p>我希望<code>'1970-01-01 00:01:30'</code>变成<code>'90'</code></p> <p>谢谢你的帮助</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p><code>diff</code>正在返回具有<code>seconds</code>属性的<code>Timedelta</code>对象</p> <h3>解决方案(可能)</h3> <pre><code>findTheDiff = lambda x: x.diff().seconds </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
1 回答
如何添加表示整数的擦边字符串?
8 回答
如何添加要在Bokeh中使用的新font.ttf文件?
9 回答
如何添加要显示的矩阵XY轴编号和XY轴
8 回答
如何添加计数?
5 回答
如何添加计数器函数?
6 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
7 回答
如何添加计数器来跟踪while循环中的月份和年份?
7 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
1 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
6 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
7 回答
如何添加评论拉梅尔亚姆
3 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
8 回答
如何添加谷歌地点自动完成到Flask?
10 回答
如何添加超时、python discord bot
2 回答
如何添加超过1dp的检查
3 回答
如何添加距离方法
10 回答
如何添加跟随游戏的敌人精灵
2 回答
如何添加路径以便python可以找到程序?
1 回答
如何添加身份验证/安全性以使用happybase访问HBase?
6 回答