MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Pandas DatetimeIndex dari MongoDB ISODate

Saya dapat mereproduksi kesalahan dengan data berikut:

idx0 = pd.date_range('2011-11-11', periods=4)
idx1 = idx0.tz_localize(tz.tzutc())
idx2 = idx1.tz_convert(tz.tzlocal())
df = pd.DataFrame([1, 2, 3, 4])

df.groupby(idx2).sum()
Out[20]: 
                           0
1970-01-01 00:00:00-05:00  9
2011-11-10 19:00:00-05:00  1

Ini adalah bug jauh di dalam kode panda, yang terkait secara eksklusif dengan tz.tzlocal() . Itu juga memanifestasikan dirinya dalam:

idx2.tz_localize(None)
Out[27]: 
DatetimeIndex(['2011-11-10 19:00:00', '1970-01-01 00:00:00',
               '1970-01-01 00:00:00', '1970-01-01 00:00:00'],
              dtype='datetime64[ns]', freq='D')

Anda dapat menggunakan salah satu solusi berikut:

  • gunakan secara eksplisit zona waktu Anda sebagai string:

    idx2 = idx1.tz_convert(tz='Europe/Dublin')
    df.groupby(idx2).sum()
    Out[29]: 
                               0
    2011-11-11 00:00:00+00:00  1
    2011-11-12 00:00:00+00:00  2
    2011-11-13 00:00:00+00:00  3
    2011-11-14 00:00:00+00:00  4
    

    atau jika tidak berhasil:

    idx2 = idx1.tz_convert(tz.gettz('Europe/Dublin'))
    
  • mengubahnya menjadi objek:

    df.groupby(idx2.astype(object)).sum()
    Out[32]: 
                               0
    2011-11-10 19:00:00-05:00  1
    2011-11-11 19:00:00-05:00  2
    2011-11-12 19:00:00-05:00  3
    2011-11-13 19:00:00-05:00  4
    

Pada dasarnya, mengonversi ke apa pun selain DatetimeIndex dengan tz=tz.local() harus bekerja.

EDIT: bug ini baru saja diperbaiki di pandas github. Perbaikan akan tersedia dalam rilis pandas 0.19.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:apa perbedaan antara dokumen, catatan, dan atribut?

  2. Cara membuat kueri MongoDB yang rumit dengan Powershell

  3. Panduan untuk Memasang di MongoDB

  4. Panduan untuk Mengonfigurasi Load Balancer di Cluster Sharded MongoDB

  5. Mongoid::Versioning - bagaimana cara memeriksa versi sebelumnya?