Pandasul se remodelează cu data de început

voturi
6

Aș dori să modelez un obiect pandas folosind o anumită dată (sau lună) ca margine a primei coșuri. De exemplu, în fragmentul următor, mi-ar plăcea ca primul meu index să fie 2020-02-29 și aș fi bucuros să specific start=2 sau start=2020-02-29 .

>>> dates = pd.date_range(2020-01-29, 2021-07-04)
>>> s = pd.Series(range(len(dates)), index=dates)
>>> s.resample('4M').count()
2020-01-31      3
2020-05-31    121
2020-09-30    122
2021-01-31    123
2021-05-31    120
2021-09-30     34
Freq: 4M, dtype: int64

Până acum acesta este cel mai curat pe care îl pot folosi pd.cut și groupby :

>>> rule = 4M
>>> start = pd.Timestamp(2020-02-29) - pd.tseries.frequencies.to_offset(rule)
>>> end = s.index.max() + pd.tseries.frequencies.to_offset(rule)
>>> bins = pd.date_range(start, end, freq=rule)
>>> gb = s.groupby(pd.cut(s.index, bins)).count()
>>> gb.index = gb.index.categories.right
>>> gb
2020-02-29     32
2020-06-30    122
2020-10-31    123
2021-02-28    120
2021-06-30    122
2021-10-31      4
dtype: int64
Întrebat 09/06/2020 la 21:14
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
0

Poți să folosești loffset :

>>> dates = pd.date_range("2020-01-29", "2021-07-04")
>>> s = pd.Series(range(len(dates)), index=dates)
>>> s.resample('4M', loffset='1M').count()
2020-02-29      3
2020-06-30    121
2020-10-31    122
2021-02-28    123
2021-06-30    120
2021-10-31     34
Freq: 4M, dtype: int64

Offset-ul implicit la cât doriți să o compensați, de la stânga.

Vedeți mai multe detalii în documente .

Coșurile de date se termină așa cum doriți, dar valorile noastre rezultate diferă. O să mă cufund în ce mai târziu diseară, când voi putea să mă joc cu codul ceva mai mult. Banuiesc ca are legatura cu modul in care loffset se ocupă efectiv de legătura.

Publicat 11/06/2020 la 22:48
sursa de către utilizator

voturi
0

Tot ce trebuie să folosiți este pd.cut ca mai jos:

>>> gb = pd.cut(s.index, bins).value_counts()
>>> gb.index = gb.index.categories.right
>>> gb
2020-02-29     32
2020-06-30    122
2020-10-31    123
2021-02-28    120
2021-06-30    122
2021-10-31      4
dtype: int64

nu este nevoie să folosiți groupby

Publicat 11/06/2020 la 23:23
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more