【问题标题】:Accessing the current row's index value for a calculation in a Python dataframe访问当前行的索引值以在 Python 数据框中进行计算
【发布时间】:2019-08-01 15:41:15
【问题描述】:

我有一个带有日期时间索引的数据框。我正在尝试添加一个新列,该列将包含该行的日期时间索引值并减去 1 个工作日。

我在工作日库中使用了一个函数,它只接受一个整数datetime,然后从起始datetime 中减去那么多工作日。

我遇到的问题是,当我尝试将该函数应用于data.index.values 时,它是索引值的array

如何仅访问当前行的日期?我是否必须执行 apply 或 lamda 才能遍历每一行?

                           CLES12Z     RBE  ...  CLEDelta  PeriodDiff
Timestamp                                   ...                      
2019-07-31 10:20:00+00:00     3.22  1.8574  ...      0.03       -0.01
2019-07-31 10:21:00+00:00     3.22  1.8574  ...      0.00        0.00
2019-07-31 10:22:00+00:00     3.23  1.8593  ...      0.06       -0.05
2019-07-31 10:23:00+00:00     3.24  1.8580  ...      0.04       -0.03
2019-07-31 10:24:00+00:00     3.24  1.8559  ...     -0.07        0.01

这是我尝试过的:

import workdays

data = pd.read_csv(filename, index_col='Timestamp', parse_dates=True, infer_datetime_format=True)
data['running_day'] = workdays.workday(data.index.values, -1)

【问题讨论】:

    标签: python pandas dataframe datetime


    【解决方案1】:

    您可以尝试使用库 datetime 中的 timedelta 对象。 Timedelta 对象表示一个持续时间,即两个日期或时间之间的差异。

    从日期时间导入日期、时间、日期时间、时间增量

    Original_date=pd.to_datetime(df.iloc[:,0])

    df["Updated_Date"]=Original_date + timedelta(days =-1)

    df

    【讨论】:

    • 关键是我需要减去 1 个工作日。不只是 1 个常规日。这就是我使用 Workdays 库的原因 - 但是,它只需要一个单一的日期时间,而不是列表或系列,因此我尝试访问每一行的索引值
    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2016-09-28
    • 2019-11-07
    • 2017-01-28
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多