我有一个 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
列
DURATION
以 Days
类型表示
如果 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/