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

Filling dataframe columns based on ranges described in other columns

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

    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

我的解决方案

在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。每行可以有不同的会话开始和结束。

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

中没有 pandas

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

其中 t 是您想要的时间。只需相应地重命名最后一列。但我不知道这是否可以移植到 pyspark 上。@Khris