Сравнение даты и времени панд - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть следующий фрейм данных:

start = ['31/12/2011 01:00','31/12/2011 01:00','31/12/2011 01:00','01/01/2013 08:00','31/12/2012 20:00']  
end =   ['02/01/2013 01:00','02/01/2014 01:00','02/01/2014 01:00','01/01/2013 14:00','01/01/2013 04:00']                                                  
df = pd.DataFrame({'start':start,'end':end})  
df['start'] = pd.to_datetime(df['start'],format='%d/%m/%Y %H:%M')
df['end'] = pd.to_datetime(df['end'],format='%d/%m/%Y %H:%M')
print(df)

          end                 start
0  2013-01-02 01:00:00   2011-12-31 01:00:00
1  2014-01-02 01:00:00   2011-12-31 01:00:00
2  2014-01-02 01:00:00   2011-12-31 01:00:00
3  2013-01-01 14:00:00   2013-01-01 08:00:00
4  2013-01-01 04:00:00   2012-12-31 20:00:00

Я пытаюсь сравнить df.end и df.start с двумя указанными датами, year_start и year_end:

year_start = pd.to_datetime(2013,format='%Y')
year_end = pd.to_datetime(2013+1,format='%Y')
print(year_start)
print(year_end)
2013-01-01 00:00:00
2014-01-01 00:00:00

Но я не могу получить свое сравнение с работой (сравнение в условиях):

conditions = [(df['start'].any()< year_start) and (df['end'].any()> year_end)]
choices = [8760]
df['test'] = np.select(conditions, choices, default=0)

Я также попытался определить year_end и year_start следующим образом, но он также не работает:

year_start = np.datetime64(pd.to_datetime(2013,format='%Y'))
year_end = np.datetime64(pd.to_datetime(2013+1,format='%Y'))

Есть идеи, как я могу заставить это работать?

1 Ответ

0 голосов
/ 01 ноября 2018

Попробуйте это:

In [797]: df[(df['start']< year_start) & (df['end']> year_end)]
Out[797]: 
                  end               start
1 2014-01-02 01:00:00 2011-12-31 01:00:00
2 2014-01-02 01:00:00 2011-12-31 01:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...