![](/img/trans.png)
[英]Checking start and end date of different columns in python dataframe
[英]python compare date list to start and end date columns in dataframe
问题:我有一个包含两列的数据框:开始日期和结束日期。 我还有一份日期清单。 所以假设数据看起来像这样:
data = [[1/1/2018,3/1/2018],[2/1/2018,3/1/2018],[4/1/2018,6/1/2018]]
df = pd.DataFrame(data,columns=['startdate','enddate'])
dates=[1/1/2018,2/1/2018]
我需要做的是:
1)为日期列表中的每个日期创建一个新列
2)对于df中的每一行,如果创建的新列的日期在开始日期和结束日期之间,则分配1; 如果没有,请指定0。
我曾尝试使用zip但后来我意识到df行将是数千行,其中日期列表将包含大约24个项目(跨越2年),因此当日期列表用尽时,即24时,它会停止。
所以下面是原始df的样子以及之后的样子:
之前:
startdate enddate
0 2018-01-01 2018-03-01
1 2018-02-01 2018-03-01
2 2018-04-01 2018-06-01
后:
startdate enddate 1/1/2018 2/1/2018
0 1/1/2018 3/1/2018 1 1
1 2/1/2018 3/1/2018 0 1
2 4/1/2018 6/1/2018 0 0
任何有关这方面的帮助将非常感谢,谢谢!
使用numpy
广播
s1=df.startdate.values
s2=df.enddate.values
v=pd.to_datetime(pd.Series(dates)).values[:,None]
newdf=pd.DataFrame(((s1<=v)&(s2>=v)).T.astype(int),columns=dates,index=df.index)
pd.concat([df,newdf],axis=1)
startdate enddate 1/1/2018 2/1/2018
0 2018-01-01 2018-03-01 1 1
1 2018-02-01 2018-03-01 0 1
2 2018-04-01 2018-06-01 0 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.