Pandas : 一行中的多个滚动方式
Pandas : Multiple rolling means in a single line
我正在尝试使用 groupby 创建两个新的滚动方式列。我目前有这两行完全符合我的要求。
data_df['mean_7'] = data_df.groupby('athlete_id')['A'].apply(lambda x : x.rolling(center = False, window = 7, min_periods = 1).mean())
data_df['mean_28'] = data_df.groupby('athlete_id')['A'].apply(lambda x : x.rolling(center = False, window = 28, min_periods = 1).mean())
我想将它们合并成一行。我已经达到:
data_df.groupby('athlete_id')['A'].apply(lambda x : [x.rolling(center = False, window = 7, min_periods = 1).mean(), x.rolling(center = False, window = 28, min_periods = 1).mean()])
这不太正确,因为我找不到将返回结果与原始 DF (data_df) 合并的简单方法。
将它放在一行中的目的是什么?
你可以这样做:
data_df['mean_7'], data_df['mean_28'] = data_df.groupby('athlete_id')['A'].apply(lambda x : x.rolling(center = False, window = 7, min_periods = 1).mean()), data_df.groupby('athlete_id')['A'].apply(lambda x : x.rolling(center = False, window = 28, min_periods = 1).mean())
现在是单行。
我正在尝试使用 groupby 创建两个新的滚动方式列。我目前有这两行完全符合我的要求。
data_df['mean_7'] = data_df.groupby('athlete_id')['A'].apply(lambda x : x.rolling(center = False, window = 7, min_periods = 1).mean())
data_df['mean_28'] = data_df.groupby('athlete_id')['A'].apply(lambda x : x.rolling(center = False, window = 28, min_periods = 1).mean())
我想将它们合并成一行。我已经达到:
data_df.groupby('athlete_id')['A'].apply(lambda x : [x.rolling(center = False, window = 7, min_periods = 1).mean(), x.rolling(center = False, window = 28, min_periods = 1).mean()])
这不太正确,因为我找不到将返回结果与原始 DF (data_df) 合并的简单方法。
将它放在一行中的目的是什么?
你可以这样做:
data_df['mean_7'], data_df['mean_28'] = data_df.groupby('athlete_id')['A'].apply(lambda x : x.rolling(center = False, window = 7, min_periods = 1).mean()), data_df.groupby('athlete_id')['A'].apply(lambda x : x.rolling(center = False, window = 28, min_periods = 1).mean())
现在是单行。