如何使用数据框中的两个条件使用 Python 向日期时间对象添加一天?

How can I add a day to a datetime object using Python, using two conditions from a dataframe?

如果列中的时间在上午 1 点 59 分之后,我想在我的列 CutoffSLAII 中添加一天,但是,如果列 FILE_START_TIME 的时间也早于 1 点 59 分,我只想添加一天12:00am。如果这两个条件都不满足,则应保留 CutoffSLAII 中的值。

我使用的代码 运行,但数据帧没有任何变化:

from datetime import datetime, time, timedelta 将 pandas 导入为 pd

def add_a_day(row: pd.Series) -> datetime:
    if pd.isna(x['CutoffSLAII', 'FILE_START_TIME']):
        return x['CutoffSLAII', 'FILE_START_TIME']
    tme = x['CutoffSLAII'].time()
    tme1 = x['FILE_START_TIME'].time()

    if tme < time(12, 0, 0) and tme1 > time(1, 59, 0):
        return x['CutoffSLAII'] + timedelta(days=1)

数据:df2['CutoffSLAII'] = df2.apply(add_a_day, axis=1)

我希望添加一天的数据:

FILE_START_TIME 和 CutoffSLAII 都是 Datetime64[ns] 数据类型,但是,当我与列中的一个值交互时,它们作为时间戳返回。

在:df2.iloc[0]['FILE_START_TIME']

输出:Timestamp('2020-11-02 19:23:47')

由于我没有足够的声望点,所以数据没有嵌入,很抱歉。

现在的错误信息是:

TypeError: string indices must be integers

您的函数 add_a_day 接受一个名为 row 的变量,但作用于另一个名为 x 的变量。 您可能想先解决这个问题!

我有点搞不懂这是怎么回事。 X 是否在其他地方被引用或者应该引用行?当您在整个数据框上应用时,您还将行作为一个系列映射到日期时间。最后,我认为您试图错误地引用行。

if pd.isna(x['CutoffSLAII']) or pd.isna(x['FILE_START_TIME'])):