代码之家  ›  专栏  ›  技术社区  ›  Chris

从datetime64[ns,UTC],Python[duplicate]中提取年、月和日

  •  0
  • Chris  · 技术社区  · 7 年前

    我在df中有此列:

        > df["time"]
    0         2007-02-01 22:00:00+00:00
    1         2007-02-01 22:00:00+00:00
    2         2007-02-01 22:00:00+00:00
    3         2007-02-01 22:00:00+00:00
    4         2007-02-01 22:00:00+00:00
    

    我想创建三个包含日、月和年的新列,但我想不出一种方法来提取其中的每一个 time column .

    1 回复  |  直到 7 年前
        1
  •  6
  •   sacuL    7 年前

    为了不修改现有的 time 列中,使用 pd.to_datetime dt 访问者:

    # obtain datetime series:
    datetimes = pd.to_datetime(df['time'])
    
    # assign your new columns
    df['day'] = datetimes.dt.day
    df['month'] = datetimes.dt.month
    df['year'] = datetimes.dt.year
    
    >>> df
                            time  day  month  year
    0  2007-02-01 22:00:00+00:00    1      2  2007
    1  2007-02-01 22:00:00+00:00    1      2  2007
    2  2007-02-01 22:00:00+00:00    1      2  2007
    3  2007-02-01 22:00:00+00:00    1      2  2007
    4  2007-02-01 22:00:00+00:00    1      2  2007
    

    str.split('-') datetime.dt.date 系列:

    datetimes = pd.to_datetime(df['time'])
    
    df[['year','month','day']] = datetimes.dt.date.astype(str).str.split('-',expand=True)
    
    >>> df
                            time  year month day
    0  2007-02-01 22:00:00+00:00  2007    02  01
    1  2007-02-01 22:00:00+00:00  2007    02  01
    2  2007-02-01 22:00:00+00:00  2007    02  01
    3  2007-02-01 22:00:00+00:00  2007    02  01
    4  2007-02-01 22:00:00+00:00  2007    02  01
    
    推荐文章