我有一个看起来像这样的数据集:
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对其进行分组,然后为每组计算'mean'的mean()。这似乎可以解决问题:
>>> 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
我现在要做的是将这些值应用于一个名为“ Offset”的新列,该列基于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')组进行类似的处理。也欢迎为此目的提供任何建议。
答案 0 :(得分:0)
我认为需要分配给bias
的{{1}}行GroupBy.transform
:
mean
或者如果需要按data_set['Offset'] = data_set[data_set['img_type'].isin(['bias'])].groupby('CCD-TEMP')['mean'].transform('mean')
print (data_set)
CCD-TEMP explen img_type mean Offset
0 -10 0 bias 1023.4234 1023.92840
1 -10 0 bias 1024.4334 1023.92840
2 -15 0 bias 1022.2344 1021.66875
3 -15 0 bias 1021.1031 1021.66875
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
列的mean
的{{3}}输出:
CCD-TEMP