python - 如何将系列值添加到日期/日期时间对象?

标签 python pandas dataframe numpy datetime

我有一个 pandas 数据框,如下所示

df = pd.DataFrame({'login_date':['5/7/2013 09:27:00 AM','09/08/2013 11:21:00 AM','06/06/2014 08:00:00 AM','06/06/2014 05:00:00 AM','','10/11/1990'],
'DURATION':[21,30,200,34,45,np.NaN})

我想将 DURATION 值添加到 login_date

DURATIONDays 类型表示

如果 DURATION 列中有 NA,只需将其替换为 0。

所以,我尝试了以下方法

df['DURATION'] = df['DURATION'].fillna(0)
df['login_date'] = pd.to_datetime(df['login_date'])
df['DURATION'] = df['DURATION'].astype('Int64')
df['logout_Date'] = df['login_date'] + pd.offsets.DateOffset(days=df['DURATION'])

但是,这会导致错误,如下所示

TypeError: Invalid type <class 'pandas.core.series.Series'>. Must be int or float.

但我已经将 DURATION 列转换为 int64 类型。

如何向我的 logout_date 列添加一列值

最佳答案

尝试:

df["logout_date"] = pd.to_datetime(df["login_date"]) + df["DURATION"].fillna(0).apply(lambda x: pd.Timedelta(days=x))
print(df)

打印:

               login_date  DURATION         logout_date
0    5/7/2013 09:27:00 AM      21.0 2013-05-28 09:27:00
1  09/08/2013 11:21:00 AM      30.0 2013-10-08 11:21:00
2  06/06/2014 08:00:00 AM     200.0 2014-12-23 08:00:00
3  06/06/2014 05:00:00 AM      34.0 2014-07-10 05:00:00
4                              45.0                 NaT
5              10/11/1990       NaN 1990-10-11 00:00:00

关于python - 如何将系列值添加到日期/日期时间对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68439151/

相关文章:

python - 使用 Pandas 在数据透视表上运行 groupby

r - 使用单个采样命令在数据框中创建多行

java - 生成随机经纬度

python - 检查具有特定值的行是否存在,如果不存在则创建

Python while 和 for 循环 - 我可以使代码更高效吗?

python - 选择 pandas 数据框中的前 n 组

r - 提取由具有大量级别的多个因素定义的行

python - 我可以在不使用 iterrows() 的情况下设置数据帧值吗?

python - luigi 配置文件在哪里?

python - 正则表达式摆脱有条件的最后一项