Pandas Частичная сортировка строк и квантили - PullRequest
1 голос
/ 17 июня 2020

Я пытаюсь сгруппировать следующие данные в подмножества из следующего panda 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

спасибо за вашу помощь в том, что я могу попробовать.

1 Ответ

1 голос
/ 17 июня 2020

IIU C, вы хотите groupby квартал, и вы получаете доступ к последним двум символам YearMonth с помощью str[-2:], чтобы получить квартал.

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
...