簡體   English   中英

python將日期列表與數據框中的起始和結束日期列進行比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM