Выбор дат по логическому типу
- Используйте pandas .Series.dt .
- Аксессор
.dt
имеет множество методов, что упрощает выбор определенных c компонентов значения datetime.
import pandas as pd
# create dataframe
data = {'DateTime': ['2018-08-29T00:03:09', '2018-08-23T00:08:10', '2018-08-29T00:13:10', '2018-08-29T00:18:10', '2018-08-30T00:23:10', '2018-02-28T00:28:10', '2018-09-19T00:33:10', '2018-08-29T00:38:10', '2018-08-29T00:43:10', '2018-11-17T00:48:10', '2018-08-29T00:53:10'],
'Value': [12310.0, 21231.0, 19.6, 19321.0, 182134.0, 172319.0, 1734.0, 1764.0, 169743.0, 16747.0, 17830.0]}
df = pd.DataFrame(data)
# convert to datetime
df.DateTime = pd.to_datetime(df.DateTime, format='%Y-%m-%dT%H:%M:%S')
# conditions
first_day = df.DateTime.dt.day[0]
first_month = df.DateTime.dt.month[0]
# select rows not equal to conditions
df[(df.DateTime.dt.month != first_month) & (df.DateTime.dt.day != first_day)]
DateTime Value
5 2018-02-28 00:28:10 172319.0
6 2018-09-19 00:33:10 1734.0
9 2018-11-17 00:48:10 16747.0
# select rows equal to conditions
df[(df.DateTime.dt.month == first_month) & (df.DateTime.dt.day == first_day)].to_clipboard(sep='\\s+')
DateTime Value
0 2018-08-29 00:03:09 12310.0
2 2018-08-29 00:13:10 19.6
3 2018-08-29 00:18:10 19321.0
7 2018-08-29 00:38:10 1764.0
8 2018-08-29 00:43:10 169743.0
10 2018-08-29 00:53:10 17830.0