在多索引数据帧上使用函数
Using functions on multi-indexed dataframe
我认为这是一个基本问题,但我还没有找到可用的解决方案。我有一些按月和按年的多索引数据,如附图所示
我想对每个 year
和 month
的某些列进行一些转换。假设我有一些功能:
def foo(series):
return series/series.max()
所以我想将此函数应用于每年每个月的某些列(例如,vol
),而不是一次针对所有数据。有人可以帮忙吗?
您可以使用 GroupBy.transform
,因为函数 return Series
:
df['new'] = df.groupby(['year','month'])['vol'].transform(foo)
替代方法是:
df['new'] = df['vol'].div(df.groupby(['year','month'])['vol'].transform('max'))
我认为这是一个基本问题,但我还没有找到可用的解决方案。我有一些按月和按年的多索引数据,如附图所示
year
和 month
的某些列进行一些转换。假设我有一些功能:
def foo(series):
return series/series.max()
所以我想将此函数应用于每年每个月的某些列(例如,vol
),而不是一次针对所有数据。有人可以帮忙吗?
您可以使用 GroupBy.transform
,因为函数 return Series
:
df['new'] = df.groupby(['year','month'])['vol'].transform(foo)
替代方法是:
df['new'] = df['vol'].div(df.groupby(['year','month'])['vol'].transform('max'))