Разделение данных на основе последних 3 месяцев и на этот раз в прошлом году - PullRequest
0 голосов
/ 13 января 2020

Мне нужно отфильтровать мои данные в два разных индекса. (1) последние три месяца, включая декабрь в качестве текущего месяца минус три (2) текущего месяца (декабрь 2019 года) и значения текущего месяца за предыдущий год

pDate              Name Date    Year    Month
11/17/2019 12:18    A   2019/11 2019    11
12/23/2018 11:52    B   2018/12 2018    12
12/1/2019 11:42     C   2019/12 2019    12
12/10/2018 14:31    D   2018/12 2018    12
12/14/2018 12:42    E   2018/12 2018    12
10/15/2019 15:19    F   2019/10 2019    10
10/23/2019 10:50    G   2019/10 2019    10
12/2/2018 15:14     H   2018/12 2018    12

Я смог сгруппировать их по последним 3 месяца, относительно быстро, как:

df1 = df.sort_values(by="pDate",ascending=True).set_index("pDate").last("3M")

Как получить фрейм данных, который отображает только декабрь 2019 (текущий месяц) и декабрь 2018

1 Ответ

1 голос
/ 13 января 2020

Идея состоит в том, чтобы создать месячные периоды по Series.dt.to_period, а затем вы можете вычесть значения для фильтрации прошлых периодов по Series.between с boolean indexing:

$changed sample datetimes
df['pDate'] = pd.to_datetime(df['pDate'])
df = df.sort_values(by="pDate")
print (df)
                pDate Name     Date  Year  Month
7 2018-12-02 15:14:00    H  2018/12  2018     12
4 2018-12-14 12:42:00    E  2018/12  2018     12
3 2019-10-10 14:31:00    D  2018/12  2018     12
5 2019-10-15 15:19:00    F  2019/10  2019     10
6 2019-10-23 10:50:00    G  2019/10  2019     10
2 2019-11-01 11:42:00    C  2019/12  2019     12
1 2019-12-23 11:52:00    B  2018/12  2018     12
0 2020-01-17 12:18:00    A  2019/11  2019     11

nowp = pd.to_datetime('now').to_period('m')
print (nowp)
2020-01

df['per'] = df['pDate'].dt.to_period('m')
df = df[df['per'].between(nowp-4, nowp-1) | df['per'].eq(nowp-13)]
print (df)
                pDate Name     Date  Year  Month      per
7 2018-12-02 15:14:00    H  2018/12  2018     12  2018-12
4 2018-12-14 12:42:00    E  2018/12  2018     12  2018-12
3 2019-10-10 14:31:00    D  2018/12  2018     12  2019-10
5 2019-10-15 15:19:00    F  2019/10  2019     10  2019-10
6 2019-10-23 10:50:00    G  2019/10  2019     10  2019-10
2 2019-11-01 11:42:00    C  2019/12  2019     12  2019-11
1 2019-12-23 11:52:00    B  2018/12  2018     12  2019-12

Деталь :

print (nowp)
2020-01
print (nowp-1)
2019-12
print (nowp-13)
2018-12
print (nowp-4)
2019-09
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...