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'
是否可以使用 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'