Tôi có một Khung dữ liệu Pandas như dưới đây.Thay đổi tần suất thời gian trong Pandas Dataframe
df
A B
date_time
2014-07-01 06:03:59.614000 62.1250 NaN
2014-07-01 06:03:59.692000 62.2500 NaN
2014-07-01 06:13:34.524000 62.2500 241.0625
2014-07-01 06:13:34.602000 62.2500 241.5000
2014-07-01 06:15:05.399000 62.2500 241.3750
2014-07-01 06:15:05.399000 62.2500 241.2500
2014-07-01 06:15:42.004000 62.2375 241.2500
2014-07-01 06:15:42.082000 62.2375 241.3750
2014-07-01 06:15:42.082000 62.2375 240.2500
Tôi muốn thay đổi tần số này để 1 minute
đặn. Nhưng hãy gặp lỗi bên dưới:
new = df.asfreq('1Min')
>>error: cannot reindex from a duplicate axis
Bây giờ, tôi hiểu tại sao điều này xảy ra. Vì độ chi tiết thời gian của tôi cao (tính bằng mili giây) nhưng không đều, tôi nhận được nhiều lần đọc mỗi phút, thậm chí mỗi giây. Vì vậy, tôi đã cố gắng kết hợp các bài đọc mili giây này vào phút và loại bỏ các bản sao như sau.
# try to convert the index to minutes and drop duplicates
df['index'] = df.index
df['minute_index']= df['index'].apply(lambda x: x.strftime('%Y-%m-%d %H:%M'))
df.drop_duplicates(cols = 'minute_index', inplace = True, take_last = True)
df_by_minute = df.set_index('minute_index')
df_by_minute
A B index
minute_index
2014-07-01 06:03 62.2500 NaN 2014-07-01 06:03:59.692000
2014-07-01 06:13 62.2500 241.50 2014-07-01 06:13:34.602000
2014-07-01 06:15 62.2375 240.25 2014-07-01 06:15:42.082000
# now change the frequency to 1 minute but I just get NaNs (!)
df_by_minute.asfreq('1Min')
A B index
2014-07-01 06:03:00 NaN NaN NaT
2014-07-01 06:04:00 NaN NaN NaT
2014-07-01 06:05:00 NaN NaN NaT
2014-07-01 06:06:00 NaN NaN NaT
2014-07-01 06:07:00 NaN NaN NaT
2014-07-01 06:08:00 NaN NaN NaT
2014-07-01 06:09:00 NaN NaN NaT
2014-07-01 06:10:00 NaN NaN NaT
2014-07-01 06:11:00 NaN NaN NaT
2014-07-01 06:12:00 NaN NaN NaT
2014-07-01 06:13:00 NaN NaN NaT
2014-07-01 06:14:00 NaN NaN NaT
2014-07-01 06:15:00 NaN NaN NaT
Như bạn thấy nó không hoạt động .. Ai đó có thể trợ giúp? Những gì tôi đang cố gắng đạt được là để có được một hàm trả về A or B as of DateTime
và DateTime sẽ có gia số 1Min.
cảm ơn bạn! Khá bực bội khi tôi hoàn toàn bỏ qua chức năng này. – Rhubarb