Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python将日期列表与dataframe中的开始和结束日期列进行比较_Python_Pandas - Fatal编程技术网

python将日期列表与dataframe中的开始和结束日期列进行比较

python将日期列表与dataframe中的开始和结束日期列进行比较,python,pandas,Python,Pandas,问题:我有一个数据框,有两列:开始日期和结束日期。我还有一份日期清单。因此,假设数据如下所示: 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中的每一行,如果创建新

问题:我有一个数据框,有两列:开始日期和结束日期。我还有一份日期清单。因此,假设数据如下所示:

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
s1=df.startdate.values
s2=df.enddate.values
v=pd.to_日期时间(pd.Series(dates))。值[:,无]
newdf=pd.DataFrame((s1=v)).T.astype(int),columns=dates,index=df.index)
pd.concat([df,newdf],轴=1)
起始日期截止日期2018年1月1日2018年2月1日
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

分享您的尝试