У меня есть набор данных, который выглядит примерно так:
data_set = pd.DataFrame([
{'img_type': 'bias', 'CCD-TEMP': -10, 'explen': 0, 'mean': 1023.4234},
{'img_type': 'bias', 'CCD-TEMP': -10, 'explen': 0, 'mean': 1024.4334},
{'img_type': 'bias', 'CCD-TEMP': -15, 'explen': 0, 'mean': 1022.2344},
{'img_type': 'bias', 'CCD-TEMP': -15, 'explen': 0, 'mean': 1021.1031},
{'img_type': 'dark', 'CCD-TEMP': -10, 'explen': 30, 'mean': 1025.9959},
{'img_type': 'dark', 'CCD-TEMP': -10, 'explen': 30, 'mean': 1023.3434},
{'img_type': 'dark', 'CCD-TEMP': -10, 'explen': 60, 'mean': 1020.1234},
{'img_type': 'dark', 'CCD-TEMP': -10, 'explen': 60, 'mean': 1022.4234},
{'img_type': 'dark', 'CCD-TEMP': -15, 'explen': 30, 'mean': 1025.9959},
{'img_type': 'dark', 'CCD-TEMP': -15, 'explen': 30, 'mean': 1023.3434},
{'img_type': 'dark', 'CCD-TEMP': -15, 'explen': 60, 'mean': 1020.1234},
{'img_type': 'dark', 'CCD-TEMP': -15, 'explen': 60, 'mean': 1022.4234},
])
То, что я пытаюсь сделать, это выделить строки img_type = 'bias', сгруппировать их по CCD-TEMP и вычислить среднее значение () среднего значения для каждой группы. Это, кажется, делает этот трюк:
>>> data_set[data_set['img_type'].isin(['bias'])].groupby('CCD-TEMP')['mean'].mean()
...
CCD-TEMP
-15 1021.66875
-10 1023.92840
Name: mean, dtype: float64
Теперь мне нужно применить эти значения к новому столбцу «Смещение» для группы всех строк на основе CCD-TEMP. Пока я пробовал несколько вещей, последняя попытка выглядела следующим образом:
>>> data_set['Offset'] = data_set[data_set['img_type'].isin(['bias'])].groupby('CCD-TEMP')['mean'].mean()
>>> data_set
CCD-TEMP explen img_type mean Offset
0 -10 0 bias 1023.4234 NaN
1 -10 0 bias 1024.4334 NaN
2 -15 0 bias 1022.2344 NaN
3 -15 0 bias 1021.1031 NaN
4 -10 30 dark 1025.9959 NaN
5 -10 30 dark 1023.3434 NaN
6 -10 60 dark 1020.1234 NaN
7 -10 60 dark 1022.4234 NaN
8 -15 30 dark 1025.9959 NaN
9 -15 30 dark 1023.3434 NaN
10 -15 60 dark 1020.1234 NaN
11 -15 60 dark 1022.4234 NaN
Очевидно, что NaN - это не то, что мне нужно.
Как лучше всего подойти к чему-то подобному с пандами? Мне нужно будет сделать то же самое с группами ('CCD-TEMP', 'explen'), как только я преодолею это препятствие. Любые советы на этот счет также приветствуются.