【发布时间】:2018-09-14 05:54:45
【问题描述】:
我有一个如下所示的数据框。
symbol Range
Date
2018-08-16 spy 1.5
2018-08-17 spy 1.2
2018-08-16 spy 1.3
2018-08-17 spy 1.6
2017-07-17 spy 1.1
2017-07-18 spy 1.9
2018-08-16 nflx 4.5
2018-08-17 nflx 5.2
我添加了一列,通过执行以下操作找到 Range 的第 15 个百分位数:
df['Range_quantile'] = df.groupby(['symbol'])['Range'].transform(lambda x: np.percentile(x.unique(), 15))
对于给定的行,我如何将相同的函数仅应用于按 symbol 分组的滚动基础上的最后 20 行(组内),然后将输出添加为列(Range_quantile_rolling)到数据框?我的示例将lambda x: np.percentile(x.unique(), 15) 函数应用于整个Range 列。
例如,如果我在 groupby 的最后 3 行中添加函数,它可能如下所示:
symbol Range Range_Quantile_Rolling_3
Date
2018-08-16 spy 1.5 NA
2018-08-17 spy 1.2 NA
2018-08-16 spy 1.3 1.21
2018-08-17 spy 1.6 1.25
2017-07-17 spy 1.1 1.15
2017-07-18 spy 1.9 1.3
2018-08-16 nflx 4.5 NA
2018-08-17 nflx 5.2 NA
【问题讨论】:
-
组中的最后 20 行?还是前 20 名中的 groupby?
-
组内的最后 20 行。
-
我迷路了……
-
@Wen 我正在添加一个示例数据框。
标签: python pandas numpy dataframe