【问题标题】:Datetime column manipulation and making a new column in dataframe in Python日期时间列操作并在 Python 中的数据框中创建一个新列
【发布时间】:2019-11-09 18:20:32
【问题描述】:

我有一个包含日期列和金额列的数据框。日期列由小时和日期信息组成。每天每个小时都有 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]"

【问题讨论】:

    标签: python dataframe datetime


    【解决方案1】:

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

    df.sort_values(by = "Date", inplace = True)
    df["hours24"] = df["amount"].shift(24)
    

    【讨论】:

    • 如果我想换班 2 周怎么办?还是 3 个月?
    • 将班数改为14*24两周。 3 个月类似。
    • 您是否建议任何方法来处理因移位导致的 N/A 值?
    • 你想用这些数据做什么?
    • 使用线性回归进行时间序列预测
    猜你喜欢
    • 2022-01-23
    • 2016-12-04
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多