Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在使用熊猫时,是否有其他方式向群中添加列?

在使用熊猫时,是否有其他方式向群中添加列?
EN

Stack Overflow用户
提问于 2016-12-29 15:17:08
回答 1查看 179关注 0票数 4

我把会话定义为一组歌曲,这些歌曲播放的时间不超过15分钟。我的目标是找到每个用户的平均会话长度。

到目前为止,我已经使用python和大熊猫将下面的数据按用户id分组,然后按照开始时间戳对每个组进行排序。

输入数据:

到目前为止我的代码是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
start_end_song.groupby('user_id').apply(lambda x: x.sort_values('start_timestamp'))

上述代码的输出:

接下来,我要计算第一首歌的结束时间戳和下一首时间戳的开头之间的间隔。

然而,这是行不通的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
start_end_song.groupby('user_id')\
.apply(lambda x: x.sort_values('start_timestamp'))\
.apply(lambda x: x['break']= start_end_song['end_timestamp']- start_end_song['start_timestamp'].shift(-1))

SyntaxError: lambda不能包含赋值

是否有另一种方式向groupby添加列?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-29 15:34:33

您可以使用pandas.DataFrame.shiftpandas.DataFrame.cumsum获得“岛屿”歌曲:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> df = pd.DataFrame({'user_id': [1, 1, 1, 1, 2, 2, 2, 2], 'start_timestamp': [1, 3, 20, 26, 1, 5, 40, 42], 'end_timestamp': [2, 4, 25, 27, 2, 10, 41, 50]}, columns=['user_id', 'start_timestamp', 'end_timestamp'])
>>> df
   user_id  start_timestamp  end_timestamp
0        1                1              2
1        1                3              4
2        1               20             25
3        1               26             27
4        2                1              2
5        2                5             10
6        2               40             41
7        2               42             50

>>> df['session_break'] = (df['start_timestamp'] - df.groupby('user_id')['end_timestamp'].shift(1) >= 15).astype('int')
>>> df
   user_id  start_timestamp  end_timestamp  session_break
0        1                1              2              0
1        1                3              4              0
2        1               20             25              1
3        1               26             27              0
4        2                1              2              0
5        2                5             10              0
6        2               40             41              1
7        2               42             50              0
>>> df['session_label'] = df.groupby('user_id')['session_break'].cumsum()
>>> df
   user_id  start_timestamp  end_timestamp  session_break  session_label
0        1                1              2              0              0
1        1                3              4              0              0
2        1               20             25              1              1
3        1               26             27              0              1
4        2                1              2              0              0
5        2                5             10              0              0
6        2               40             41              1              1
7        2               42             50              0              1

更新

要获得平均会话持续时间,可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> g = df.groupby(['user_id', 'session_label']).agg({'end_timestamp' : np.max, 'start_timestamp' : np.min})
>>> g
                       start_timestamp  end_timestamp
user_id session_label                                
1       0                            1              4
        1                           20             27
2       0                            1             10
        1                           40             50

>>> (g['end_timestamp'] - g['start_timestamp']).groupby(level=0).mean()
user_id
1    5.0
2    9.5
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41388537

复制
相关文章
判断有向图是否有圈
1. 拓扑排序 拓扑排序是对有向无圈图的顶点的一种排序:如果存在一条vi到vj的路径,则vj排在vi后面(因为只要满足这个特性就是拓扑序列,所以它不一定是唯一的)。比如在众多的大学课程中,有些课有先修课,我们可以将其抽象为拓扑排序,有向边(v, w)表明课程v必须安排在w之前,否则课程w就无法进行。我们可以想象所有的课程以及课与课之间的关系可以用一个图来表示,而拓扑排序就可以知道课程安排的顺序。然而,如果图存在圈,就没有拓扑序列。比如如果要上课程A必须上课程B,要上课程B必须上课程C,而要上课程C必须上课程
llhthinker
2018/01/24
2.9K0
在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”? 右键选择该文件.cpp格式的->属性->预编译头,→ 不使用预编译头 错误描述:fatal err
战神伽罗
2019/07/24
8.4K0
问与答112:如何查找一列中的内容是否在另一列中并将找到的字符添加颜色?
Q:我在列D的单元格中存放着一些数据,每个单元格中的多个数据使用换行分开,列E是对列D中数据的相应描述,我需要在列E的单元格中查找是否存在列D中的数据,并将找到的数据标上颜色,如下图1所示。
fanjy
2021/04/21
7.3K0
问与答112:如何查找一列中的内容是否在另一列中并将找到的字符添加颜色?
使用java(jdbc)向mysql中添加数据时出现“unknown column……”错误
这里的date变量其实我是用SimpleDate类设置的是一个字符串类型的数据了,根据上面的叙述,得知这个“+date+”还是需要使用单引号引起来的,如下:
roobtyan
2019/02/21
5.2K0
Python操控Excel:使用Python在主文件中添加其他工作簿中的数据
本文介绍使用Python向Excel主文件添加新数据的最佳方法。该方法可以保存主数据格式和文件中的所有内容。
fanjy
2022/11/16
7.9K0
Python操控Excel:使用Python在主文件中添加其他工作簿中的数据
Spring 中的 @Import 注解及向容器中添加 Bean 的几种方式
这次介绍一下 Spring 中的一个重要的注解 @Import 以及向容器中添加 Bean 的几种方式 ,该注解在 SpringBoot 自动转配中起到重要的作用。
wsuo
2020/07/30
1.7K0
在Excel里,如何查找A列的数据是否在D列到G列里
Excel数据查找,相信多数的同学都不陌生,我们经常会使用vlookup等各类查找函数,进行数据的匹配查找。
matinal
2023/10/13
2110
在Excel里,如何查找A列的数据是否在D列到G列里
第42期:MySQL 是否有必要多列分区
之前的篇章我们讨论的都是基于单列的分区表,那有无必要建立基于多列的分区表?这种分区表数据分布是否均匀?有无特殊的应用场景?有无特殊的优化策略?本篇基于这些问题来进行重点解读。
爱可生开源社区
2022/06/29
1.8K0
如何向回调函数中传入其他参数
最近写JS经常会因为向回调函数中传参而头疼,今天总结一下向回调函数中传参的方法,以后的应用中就不用在到处去找了。
大江小浪
2018/07/25
2.2K0
在 Ubuntu 和其他 Linux 发行版中添加指纹登录功能
进入 “设置”,然后点击左边栏的 “用户”。你应该可以看到系统中所有的用户账号。你会看到几个选项,包括 “指纹登录”。
用户1685462
2021/09/13
2.3K0
Spring5 - 向IOC容器中添加组件的4种方式
查考: Spring5源码 - Spring IOC 注解复习 @CompentScan 部分
小小工匠
2021/08/17
1.1K0
js给数组添加数据的方式/js 向数组对象中添加属性和属性值[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132130.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/30
23.5K0
在制造行业中,ERP是否有更大是施展空间
  其实,在很多企业认为自己已经实现智能制造的时候,提出工业4.0的德国也仅仅是将其作为一个发展的目标。中国制造的总体水平基本在中等的水平,甚至更低,智能制造就更是遥不可及的。
明象ERP
2019/03/01
6320
Bootstrap 轮播(Carousel)插件向站点添加滑块的方式
如果您想要单独引用该插件的功能,那么您需要引用 carousel.js。或者,正如 Bootstrap 插件概览 一章中所提到,您可以引用 bootstrap.js 或压缩版的 bootstrap.min.js。
好派笔记
2021/09/18
2.8K0
【MySQL】分区字段列是否有必要再单独建索引
对于分区字段必须是主键的一部分,那么建了复合主键之后,是否需要对分许字段再单独添加一个索引呢?有没有效果?下面来验证一下
用户5522200
2019/06/02
2.6K0
ajax请求参数使用push循环向数组中添加请求参数
function batch(){ var dataArr = []; $('#line').each(function(){ let obj = {name : $('#name').val(),sex : $('#sex').val()}; dataArr.push(obj) }); if (dataArr.length > 0) { $.ajax({
友儿
2022/09/11
2.6K0
判断链表中是否有环
操作一:定义了两个变量来记录,A一个一次走一步,B一个一次走两步,如果有环B必然会追上A。如果无环B必然会先遍历完。
忧愁的chafry
2022/10/30
1.5K0
判断链表中是否有环
java如何向数组中添加元素[数组的添加]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说java如何向数组中添加元素[数组的添加],希望能够帮助大家进步!!!
Java架构师必看
2022/04/06
7.7K0
在群晖上使用 Traefik
本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)
soulteary
2019/09/28
2.8K0
点击加载更多

相似问题

熊猫群+如果其他+添加新列回到原来的df

10

如何根据其他列值向熊猫DataFrame添加列?

26

用向量化方式向熊猫DataFrame中添加列对其他列值进行条件调整

23

熊猫从群结果中添加新列

13

熊猫群从应用操作中添加列

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文