Pandalar başlangıç tarihi ile yeniden örneklendi

oy
6

İlk bölmenin kenarı olarak belirli bir tarih (veya ay) kullanarak bir panda nesnesini yeniden örneklemek istiyorum. Örneğin, aşağıdaki snippet'te ilk dizin değerimin 2020-02-29 ve belirtmekten mutlu olurum start=2 veya 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

Şimdiye kadar bu, kullanımları ile karşılaşabileceğim en temiz pd.cut ve 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
Oluştur 09/06/2020 saat 21:14
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
0

Kullanabilirsiniz 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

Ofset varsayılan olarak soldan ne kadar dengelemek istediğinize göre ayarlanır.

Dokümanlar'da daha fazla ayrıntı görün.

Tarih kutuları istediğiniz gibi sonuçlanır, ancak sonuç değerlerimiz farklıdır. Bu gece daha sonra kodla biraz daha oynayabileceğim zaman neden dalışa gireceğim. Bunun nasıl yapıldığından şüpheleniyorum loffset aslında binning işler.

Cevap 11/06/2020 saat 22:48
kaynak kullanıcı

oy
0

Kullanmanız gereken tek şey pd.cut aşağıdaki gibi:

>>> 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

kullanmaya gerek yok groupby

Cevap 11/06/2020 saat 23:23
kaynak kullanıcı

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