Применение функции даты к столбцу для извлечения атрибутов даты

1

Я пытаюсь создать функцию клиента в 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'))
Теги:
pandas
datetime
function

1 ответ

2
Лучший ответ

Вы можете векторизовать это. Определить функцию, которая

  1. преобразует столбец поля в datetime и
  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
  • 0
    IMO, это был бы еще более DF.pipe пример, если бы вы DF.pipe несколько DF.pipe вместе ... ;-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню