根据其他列中描述的范围填充数据框列



这里有一个非常有趣的问题,我有一个数据集,比如

    id,    start,  end   
    1234    200   400
    1235    300   500
    1236    100   900
    1236    200   1200
    1236    300   1400

Main Objective:我想计算每个id的并发会话数。

at 100, id:1236 has 1 session running
at 200, id:1236 has 2 sessions
at 300, id:1236 has 3 sessions
...
at 1000m id:1236 has 2 sessions
etc

My solution:

  • 将列从1到1400(会话的最小和最大)添加到所有行
  • 将会话开始值和会话结束值之间的列填入1
  • 然后添加用户的所有行,以便得到上述结果。

In pandas:

df = pd.read_csv(data+fileName,sep="t",usecols=[0,1,2],names=['id','start','end'])
for i in range(0,1440):
    df[str(i)]=0
print df.columns

我可以添加列,并且正在考虑如何在每一行的会话开始和结束之间向这些列填充1。每一行可以有不同的会话开始和结束。

任何提示都会有很大帮助。我只是在熊猫中尝试它,但后来我必须将其移植到Apache pyspark,其中在工作节点中没有熊猫。

在Pandas中你也可以这样做:df[(df.start <= t)&(df.end >= t)].groupby("id").count()['start'].reset_index()

,其中t是期望的时间。只需相应地重命名最后一列。但我不知道是否可以通过pyspark.@Khris

相关内容

  • 没有找到相关文章

最新更新