Saya memiliki kerangka data panda main_df dengan date sebagai index

<bound method Index.get_value of DatetimeIndex(['2021-05-11', '2021-05-12','2021-05-13'],
 dtype='datetime64[ns]', name='date', freq=None)>

Apa yang saya coba lakukan adalah mengambil baris berdasarkan tanggal tertentu.

Saya mencoba seperti ini main_df.loc['2021-05-11'] dan berfungsi dengan baik.

Tetapi jika saya melewati objek tanggal, itu gagal

main_df.loc[datetime.date(2021, 5, 12)] dan tampilannya key error.

Indeksnya adalah DatetimeIndex lalu mengapa ini membuat kesalahan jika saya tidak memberikan kunci sebagai string?

1
Abhilash 13 Mei 2021, 09:54

1 menjawab

Jawaban Terbaik

Alasannya adalah DatetimeIndex adalah array tanggal yang disederhanakan, jadi jika memilih tanggal vy gagal.

Jadi perlu dipilih berdasarkan datetime:

main_df = pd.DataFrame({'a':range(3)}, 
                        index=pd.to_datetime(['2021-05-11', '2021-05-12','2021-05-13']))
print (main_df)
            a
2021-05-11  0
2021-05-12  1
2021-05-13  2

print (main_df.index)
DatetimeIndex(['2021-05-11', '2021-05-12', '2021-05-13'], dtype='datetime64[ns]', freq=None)

print (main_df.loc[datetime.datetime(2021, 5, 12)])
a    1
Name: 2021-05-12 00:00:00, dtype: int64

Jika perlu, pilih berdasarkan tanggal, konversikan datetimes ke date terlebih dahulu dengan DatetimeIndex.date:

main_df.index = main_df.index.date
print (main_df.index)
Index([2021-05-11, 2021-05-12, 2021-05-13], dtype='object')

print (main_df.loc[datetime.date(2021, 5, 12)])
a    1
Name: 2021-05-12, dtype: int64

Jika menggunakan string, gunakan pengindeksan yang tepat, jadi panda pilih dalam DatetimeIndex dengan cara yang benar.

1
jezrael 13 Mei 2021, 07:41