如何使用数据框中的两个条件使用 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'])):
如果列中的时间在上午 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'])):