Pandas select date_range с пустыми строками не работает - PullRequest
0 голосов
/ 17 мая 2018

во фрейме данных pandas У меня есть столбец с датами и такими же пустыми значениями

15    2018-04-13 13:26:54 UTC
16                           
    ...
28                           
29    2018-05-15 00:00:00 UTC
30                           
    ...
40                           
41                           
42    2018-03-24 20:32:36 UTC
    ...
46    2018-04-10 20:41:39 UTC
47                           
48                           
49    2018-01-26 20:30:22 UTC
    ....
58   2017-05-30 09:26:04 UTC
59   2010-09-09 14:09:03 UTC

, и я ищу значения пустые и в диапазоне дат.К сожалению, ничего подобного не сработало

df[df['date_column'].loc['2017-01-01':'2018-01-01']]
df['date_column']isin(pd.date_range('two_months', periods=2, freq='M'))
df[df['date_column'].str.contains(regex_filters_date)]

Как правильно выбрать даты в заданном диапазоне?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Мой предпочтительный метод указания диапазона дат в пандах - это использование логической маски, однако существуют и другие методы, использующие такие инструменты, как класс DatetimeIndex.

Вот некоторая документация из предыдущего потокаЯ думаю, что вы найдете полезным!

Используя логическую маску, ваше решение будет выглядеть примерно так:

mask = (df['date_column'] > '2017-01-01') & (df['date_column'] <= '2018-01-01')
df = df.loc[[mask]]
0 голосов
/ 17 мая 2018

Например, у вас есть следующий фрейм данных

df=pd.DataFrame({'Date':['2018-03-24 20:32:36 UTC','','2018-01-26 20:30:22 UTC','']})
s=pd.to_datetime(df.Date)
df[(s>pd.to_datetime('2018-02-01'))&(s<pd.to_datetime('2018-04-01'))]
                      Date
0  2018-03-24 20:32:36 UTC

Если вы хотите пусто выбрать

df[((s > pd.to_datetime('2018-02-01')) & (s < pd.to_datetime('2018-04-01')))|s.isnull()]
Out[831]: 
                      Date
0  2018-03-24 20:32:36 UTC
1                         
3                         
...