将日期函数应用于列以提取日期属性

时间:2018-06-17 19:56:54

标签: python pandas function datetime

我试图在python中构建一个客户函数,可以处理各种与日期相关的任务,这样我就可以在各种情况下使用它。

我似乎很难解决如何将其应用到整个专栏的问题。

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'))

1 个答案:

答案 0 :(得分:2)

你可以对此进行矢量化。定义一个

的函数
  1. 将字段列转换为datetime和
  2. 使用getattr
  3. 动态提取感兴趣的属性

    现在,通过DataFrame.pipe

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

    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
    
相关问题