这里有一个非常有趣的问题,我有一个数据集,比如
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