创建一列,该列是从另一列中提取的一组特定日期之后出现的日期数的总和

时间:2019-04-17 16:48:39

标签: python pandas datetime python-datetime

我有一个与此相似的数据框(除了“访问”列的数量增加到Visit_84,并且有几百个客户端-我在这里已对其进行了简化)

Client    Visit_1    Visit_2    Visit_3    Visit_4    ident_date
Client_1  2018-01-01 2018-01-20 2018-02-10 2018-02-20 2018-01-31
Client_2  2018-01-10 2018-01-30 2018-02-10 2018-03-20 2018-02-31
Client_3  2018-01-20 2018-04-01 2018-04-10 2018-04-20 2018-03-31
Client_4  2018-01-30 2018-03-01 2018-03-10 2018-04-25 2018-04-31

我想创建一个名为vis_sum的新列,该列为ident_date之后的每个客户产生所有访问的总和。结果数据框应如下所示:

Client    Visit_1    Visit_2    Visit_3    Visit_4    ident_date vis_sum
Client_1  2018-01-01 2018-01-20 2018-02-10 2018-02-20 2018-01-31 2
Client_2  2018-01-10 2018-01-30 2018-02-10 2018-03-20 2018-02-31 1
Client_3  2018-01-20 2018-04-01 2018-04-10 2018-04-20 2018-03-31 3
Client_4  2018-01-30 2018-03-01 2018-03-10 2018-04-25 2018-04-31 0

1 个答案:

答案 0 :(得分:4)

确定日期之后

df.set_index('Client',inplace=True)
#df=df.apply(pd.to_datetime)

df['new']=df.gt(df.ident_date,axis=0).sum(1)
df
Out[763]: 
            Visit_1    Visit_2    Visit_3    Visit_4 ident_date  new
Client                                                              
Client_1 2018-01-01 2018-01-20 2018-02-10 2018-02-20 2018-01-31    2
Client_2 2018-01-10 2018-01-30 2018-02-10 2018-03-20 2018-02-28    1
Client_3 2018-01-20 2018-04-01 2018-04-10 2018-04-20 2018-03-31    3
Client_4 2018-01-30 2018-03-01 2018-03-10 2018-04-25 2018-04-30    0