Saya memiliki kerangka data 'a' seperti ini,

[In]  a
[Out]
                  0
date               
2014-01-28  10.1956
2014-01-29  10.6456
2014-01-30  10.4350
2014-02-07  10.8275
2014-02-10  10.9806
2014-02-11  10.9711
2014-02-12  10.8849
2014-02-13  10.3967
2014-02-14  10.5211
2014-02-17  10.7700
2014-02-18  10.5211
2014-02-19  10.9232
2014-02-20  10.5594
2014-02-21  10.3679
2014-02-24  10.5115
2014-02-25  10.2339
2014-02-26  10.1286
2014-02-27   9.9371
2014-02-28  10.2914
2014-03-03  10.4732
2014-03-04  10.3201
2014-03-05  10.3296

Jika saya menggunakan sampel ulang untuk mengumpulkan hari terakhir setiap bulan, hasilnya adalah:

[In]  a.resample('M').last() 
[Out]
                  0
date    
2014-01-31  10.4350
2014-02-28  10.2914
2014-03-31  10.3296

Seperti yang Anda lihat, tidak ada '2014-01-31' dan '2014-03-31' dalam indeks asli. Saya hanya ingin menyimpan tanggal terakhir setiap bulan dari file index. Hasilnya harus:

                  0
date    
2014-01-30  10.4350
2014-02-28  10.2914
2014-03-05  10.3296

Bagaimana saya bisa mendapatkan hasil seperti ini? Btw, saya telah menggunakan 'BM' dalam sampel ulang dan mendapatkan hasil yang sama.

1
xiaoluohao 24 Maret 2020, 12:24

1 menjawab

Jawaban Terbaik

Konversi indeks ke kolom, gunakan parameter on di resample dengan last dan terakhir tetapkan indeks dengan kolom date:

df = a.reset_index().resample('M', on='date').last().set_index('date')
print (df)
                  0
date               
2014-01-30  10.4350
2014-02-28  10.2914
2014-03-05  10.3296
1
jezrael 24 Maret 2020, 09:41