我有一个包含日期列和金额列的数据框。日期列包含小时和日期信息。每天每一小时都有24个条目。我需要创建一个新列,以显示该行的日期和时间之前24小时内的金额。
例如对于“ 2019-11-06 18:00:00”,新列应显示“ 2019-11-05 18:00:00”的金额信息。问题在于我们应该对第一个条目进行处理,因为它没有以前的日期。我以为我可以在创建新列时删除第一个条目,但由于第一个条目没有更早的日期,所以现在我遇到了KeyError。如何解决KeyError?
数据框的外观:数据框的屏幕截图
[在]:
hours24_c = df["Date"]-timedelta(hours=24)
df["hours24"] = df["amount"].loc[hours24_c]
[出]:
KeyError: "None of [DatetimeIndex(['2015-12-30 00:00:00', '2015-12-30 01:00:00',\n '2015-12-30 02:00:00', '2015-12-30 03:00:00',\n '2015-12-30 04:00:00', '2015-12-30 05:00:00',\n '2015-12-30 06:00:00', '2015-12-30 07:00:00',\n '2015-12-30 08:00:00', '2015-12-30 09:00:00',\n ...\n '2019-11-05 14:00:00', '2019-11-05 15:00:00',\n '2019-11-05 16:00:00', '2019-11-05 17:00:00',\n '2019-11-05 18:00:00', '2019-11-05 19:00:00',\n '2019-11-05 20:00:00', '2019-11-05 21:00:00',\n '2019-11-05 22:00:00', '2019-11-05 23:00:00'],\n dtype='datetime64[ns]', length=33744, freq=None)] are in the [index]"
按日期排序,然后使用shift:
df.sort_values(by = "Date", inplace = True)
df["hours24"] = df["amount"].shift(24)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句