Python 对列应用日期函数以提取日期属性

Python 对列应用日期函数以提取日期属性,python,pandas,function,datetime,Python,Pandas,Function,Datetime,我正在尝试用python构建一个customer函数,该函数可以处理各种与日期相关的任务,以便在各种情况下易于使用 我似乎在为如何将此应用于整个专栏而挣扎 import pandas as pd import datetime df = pd.DataFrame({'dates' : ['2018-01-02','2018-06-15','2018-07-07']}) def get_date_attribute(date_attribute,date_field): """

我正在尝试用python构建一个customer函数,该函数可以处理各种与日期相关的任务,以便在各种情况下易于使用

我似乎在为如何将此应用于整个专栏而挣扎

import pandas as pd
import datetime

df = pd.DataFrame({'dates' : ['2018-01-02','2018-06-15','2018-07-07']}) 


def get_date_attribute(date_attribute,date_field):

    """
    Take in a date in YYYY-MM-DD format and return the month
    """

    mydate = datetime.datetime.strptime(date_field, "%Y-%m-%d")
    if date_attribute =='month':
        result = mydate.month()
    elif date_attribute =='year':
        result = mydate.year()
    elif date_attribute=='day':
        result = mydate.day()
    else:
        print("Valid values: 'month','day','year'")

    return(result)


df['month']= df.apply(get_date_attribute(date_attribute='month',date_field='dates'))

你可以把它矢量化。定义一个函数

  • 将字段列转换为日期时间,然后
  • 使用
    getattr
  • 现在,通过
    DataFrame.pipe
    应用此函数

    def get_date_attr(df, attr, field):
         return getattr(
             pd.to_datetime(df[field], errors='coerce').dt, attr)
    


    在我看来,如果您将几个
    DF.pipe
    链接在一起,这将是一个更好的例子…;-)
    df.pipe(get_date_attr, attr='month', field='dates')
    
    0    1
    1    6
    2    7
    Name: dates, dtype: int64
    
    df.pipe(get_date_attr, attr='day', field='dates')
    
    0     2
    1    15
    2     7
    Name: dates, dtype: int64