日期时间列操作并在Python中的数据框中创建新列

我有一个包含日期列和金额列的数据框。日期列包含小时和日期信息。每天每一小时都有24个条目。我需要创建一个新列,以显示该行的日期和时间之前24小时的金额。

例如,对于“ 2019-11-06 18:00:00”,新列应显示“ 2019-11-05 18:00:00”的金额信息。问题在于我们应该如何处理第一个条目,因为它没有以前的日期。我以为我可以在创建新列时删除第一个条目,但是由于第一个条目没有先前的日期,所以现在我遇到了KeyError。如何解决KeyError?

数据框的外观:screenshot of dataframe

[输入]:


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]"

dy1900 回答:日期时间列操作并在Python中的数据框中创建新列

按日期排序,然后使用shift:

df.sort_values(by = "Date",inplace = True)
df["hours24"] = df["amount"].shift(24)
本文链接:https://www.f2er.com/3131759.html

大家都在问