pandas 适用于属性而不是功能

pandas apply to attribute instead of function

是否可以使用 df.apply 来获取属性而不是 运行 函数?我想从日期中检索年份以执行 groupby。例如..

import pandas as pd
import datetime
import numpy as np

df = pd.DataFrame({'date': [datetime.datetime(2010,1,1)+datetime.timedelta(days=i*15) 
for i in range(0,100)]})

这有效..

df['year'] = [d.year for d in df['date']]

这也有效..

df['year'] = df['date'].apply(lambda x: x.year)

但这不..

df['year'] = df['date'].apply(year)

这也不..

df['year'] = df['date'].year

最有效的方法是什么?

您会很高兴知道有一整套功能可以提供丰富的日期属性。您可以使用 dt 访问器获取许多日期时间属性。它只能用于 pandas 日期类型的系列或索引。

您可以使用 dir(df['date'].dt) 查看所有可用的属性。下面打印出来。在您的情况下,只需使用 df['date'].dt.year

'ceil',
 'date',
 'day',
 'dayofweek',
 'dayofyear',
 'days_in_month',
 'daysinmonth',
 'floor',
 'freq',
 'hour',
 'is_leap_year',
 'is_month_end',
 'is_month_start',
 'is_quarter_end',
 'is_quarter_start',
 'is_year_end',
 'is_year_start',
 'microsecond',
 'minute',
 'month',
 'nanosecond',
 'normalize',
 'quarter',
 'round',
 'second',
 'strftime',
 'time',
 'to_period',
 'to_pydatetime',
 'tz',
 'tz_convert',
 'tz_localize',
 'week',
 'weekday',
 'weekday_name',
 'weekofyear',
 'year'