Я пытаюсь создать функцию клиента в 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'))
Вы можете векторизовать это. Определить функцию, которая
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
DF.pipe
пример, если бы выDF.pipe
несколькоDF.pipe
вместе ... ;-)