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

Python 创建一列,该列是从另一列中提取的特定日期之后的一组列中日期数的总和,python,pandas,datetime,python-datetime,Python,Pandas,Datetime,Python Datetime,我有一个名为的数据框架,它看起来与此类似,只是“Visit”列的数量增加到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 2

我有一个名为的数据框架,它看起来与此类似,只是“Visit”列的数量增加到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
在确定你的约会之后

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
在确定你的约会之后

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

二月没有2018年2月31日…一月、三月和四月相同。。。。越界EB没有31 2018-02-31…1月、3月和4月相同。。。。出界感谢这一点,它可以工作-我做了一些调整,使其与我的df一起工作,包括按带有“Visit”前缀的列进行过滤,因为df中有其他列,并且,由于ident_date列中缺少数据,如果缺少ident_date,我必须在末尾添加一行,设置new=0。日期是虚拟日期-它们在实际DFT中都是准确的。为此,它起作用了-我做了一些调整,使其与我的df一起工作,包括按带有“Visit”前缀的列过滤,因为df中还有其他列,并且,由于ident_date列中缺少数据,我不得不在末尾添加一行,如果ident_date缺少,则将new=0。日期是虚拟日期-它们在实际df中都是准确的