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

标签 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. 将字段列转换为日期时间,并且
  2. 使用 getattr 动态提取感兴趣的属性

现在,通过 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

关于python - 将日期函数应用于列以提取日期属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50900002/

相关文章:

python - 如何使用 pd.read_csv 过滤 Pandas 中的列

pandas - 一次设置多列给出错误 "Not in index error!"

json - Pandas:将 JSON 转换为 Pandas Dataframe

javascript - 将 onClick 与 jQuery POST 结合使用不起作用

python - Zerorpc:如何将字符串数据从Python转换为 Node

python - 动态导入python模块

python - 创建矩阵,并按间隔在每个单元格上添加标签

javascript - Jquery mobile - 在按钮单击事件后返回索引

ruby - 用于定义方法的 ruby​​ def << 语法

python - Pandas Holidays to Dataframe with Holiday Name