【问题标题】:How to add series values to date/datetime object?如何将系列值添加到日期/日期时间对象?
【发布时间】:2021-09-27 00:54:38
【问题描述】:

我有一个如下所示的 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

【问题讨论】:

    标签: python pandas dataframe numpy datetime


    【解决方案1】:

    试试:

    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
    

    【讨论】:

      猜你喜欢
      • 2021-03-26
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2018-02-17
      • 2011-10-21
      • 1970-01-01
      相关资源
      最近更新 更多