Публикация, потому что я впервые не смог найти ответ на свою проблему.Я подошел близко, но без игры в кости.Я пытаюсь выполнить итерацию цикла или применить функцию к кадру данных pandas, который сгруппирован по двум столбцам, а данные, к которым я хочу получить, находятся в третьем столбце после группировки столбцов 1 и 2.
УчитываяПример данных:
df = pd.DataFrame({'Class':np.random.randint(1,10,100),'Type':np.random.choice(list('ABCD'),100),'Guid':np.random.randint(10000,99999,100)})
Если я использую
for name,group in df.groupby(['Class','Type']):
print(name)
print(group.Guid)
или
for name,group in df.groupby(['Class','Type'])['Guid']:
print(name)
print(group)
, оба получат желаемый результат
(1, 'A')
86 86606
89 69999
Name: Guid, dtype: int32
(1, 'B')
0 71982
67 95343
68 84520
75 57036
87 61938
Name: Guid, dtype: int32
(1, 'C')
48 67008
Name: Guid, dtype: int32
(1, 'D')
4 87947
6 98477
13 78437
53 95792
76 66178
Name: Guid, dtype: int32
(2, 'A')
42 47960
Name: Guid, dtype: int32
(2, 'B')
30 69891
82 84436
91 54546
Name: Guid, dtype: int32
(3, 'A')
5 74182
19 12167
35 99939
78 38939
Name: Guid, dtype: int32
(3, 'B')
16 92239
27 25167
41 84245
47 43174
51 50472
Name: Guid, dtype: int32
Далее я хотел бы сделать несколько математических заданий или применить функцию к «Guid» в пределах его сгруппированных настроек, отличных от стандартного среднего, стандартного, счетного и т. Д.Они отлично работают, могут даже агрегировать их.
df.groupby(['Class','Type']).Guid.mean()
Class Type
1 A 78302.500000
B 74163.800000
C 67008.000000
D 85366.200000
2 A 47960.000000
B 69624.333333
3 A 56306.750000
B 59059.400000
C 31237.000000
D 61973.000000
4 A 36573.000000
B 55441.250000
C 49381.333333
D 35420.000000
5 A 57252.500000
B 59267.250000
C 48885.000000
D 62163.000000
6 A 43106.800000
B 46767.500000
C 23170.000000
D 31663.000000
7 A 47804.750000
B 61570.666667
C 60989.666667
D 57300.000000
8 A 55890.000000
B 50629.000000
D 26312.000000
9 A 13338.500000
B 49556.000000
C 66602.400000
D 58603.500000
Name: Guid, dtype: float64
Но я не могу понять, как применить мою собственную математику или функцию к «Guid», когда она сгруппирована по [«Class»,'Тип'].Например, если бы я хотел посчитать, сколько раз значение в «Guid» изменилось более чем на 10000.
df.groupby(['Class','Type']).Guid.apply(function or maths here)
df.groupby(['Class','Type']).agg(['count','mean','std',somefunctionhere]).Guid
Любая помощь очень ценится!