Pandas 在两个分位数之间的组中选择值

Pandas pick values in group between two quantiles

我想通过选择两个值之间的行(dimucally 定义为分位数)每组 来过滤我的数据集。具体来说,我有一个像

这样的数据集
import pandas as pd
df = pd.DataFrame({'day': ['one', 'one', 'one', 'one', 'one', 'one', 'two', 'two', 'two', 'two', 'two'], 
                   'weather': ['rain', 'rain', 'rain', 'sun', 'sun', 'sun', 'sun', 'rain', 'rain', 'sun', 'rain'], 
                   'value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]})

我想 select 每天和每个天气的值在 0.1 和 0.9 分位数之间的行。我可以通过

计算分位数
df.groupby(['day', 'weather']).quantile([0.1, .9])

但后来我觉得卡住了。将生成的数据集与原始数据集连接起来是一种浪费(原始数据集可能很大),我想知道是否有类似

的东西
df..groupby(['day', 'weather']).select('value', between=[0.1, 0.9])

value 转换为 quantile

g = df.groupby(['day', 'weather'])['value']
df[df['value'].between(g.transform('quantile', 0.1), g.transform('quantile', 0.9))]

   day weather  value
1  one    rain      2
4  one     sun      5
8  two    rain      9