Pandas 部分字符串排序和分位数

Pandas Partial String Sort and Quantiles

我正在尝试将以下数据分组为以下表格中来自以下熊猫 DF 的子集,并按季度分组(Q1、Q2、Q3、Q4):

  YearMonth  adjusted_power
0    1991Q1    16484.966667
1    1991Q2    14882.566667
2    1991Q3    12983.133333
3    1991Q4    19288.500000
4    1992Q1    19893.600000
5    1992Q2    15904.233333
6    1992Q3    14783.000000
7    1992Q4    18405.500000
8    1993Q1    22045.600000
9    1993Q2    12143.776667

我试过类似的方法,但我无法获得我正在寻找的答案。这是我的尝试:

q1 = Qdata['YearMonth'].str.contains('Q1').groupby(Qdata['adjusted_power']).quantile(0.25)
Qdata['YearMonth'].str.contains('Q1')['adjusted_power'].quantile(0.25)

我的最终答案应该是这样的:

Q1(0.25) result
Q1(0.50) result
Q1(0.75) result
...
Q4(0.75) result

感谢您对我可以尝试的事情的帮助。

IIUC,您想要 groupby 个季度,您可以使用 str[-2:] 访问 YearMonth 的最后两个字符以获得该季度。

s = Qdata['adjusted_power'].groupby(Qdata['YearMonth'].str[-2:]).quantile([0.25, 0.5,0.75])
print (s)
YearMonth      
Q1         0.25    18189.283333
           0.50    19893.600000
           0.75    20969.600000
Q2         0.25    13513.171667
           0.50    14882.566667
           0.75    15393.400000
Q3         0.25    13433.100000
           0.50    13883.066666
           0.75    14333.033333
Q4         0.25    18626.250000
           0.50    18847.000000
           0.75    19067.750000
Name: adjusted_power, dtype: float64