我有一个像这样格式化的pandas数据框:
Out[26]:
sub type window mean stdev rms
0 S03 e4 w1 -0.6357 0.3274 0.7150
1 S03 e4 w1 -0.5910 0.3106 0.6676
2 S03 e4 w1 -0.4616 0.3607 0.5857
3 S03 e4 w1 -0.4570 0.3387 0.5687
4 S03 e4 w1 -0.5737 0.2689 0.6335
5 S03 e4 w1 -0.4818 0.2139 0.5271
6 S03 e4 w1 -0.4272 0.1523 0.4536
11 S03 e4 w2 -0.4561 0.1891 0.4937
12 S03 e4 w2 -0.5572 0.2553 0.6128
13 S03 e4 w2 -0.6797 0.2366 0.7196
14 S03 e4 w2 -0.5741 0.1919 0.6053
... ... ... ... ... ...
3786 S26 e4 w5 0.7540 0.0893 0.7593
3787 S26 e4 w5 0.7976 0.0913 0.8028
3788 S26 e4 w5 0.8569 0.2041 0.8808
3789 S26 e4 w5 0.8631 0.2867 0.9094
3790 S26 e4 w5 0.8421 0.3568 0.9145
3791 S26 e4 w5 0.8213 0.3814 0.9055
3792 S26 e4 w6 0.6712 0.3152 0.7414
3793 S26 e4 w6 0.6619 0.3250 0.7373
3794 S26 e4 w6 0.6697 0.4079 0.7840
3795 S26 e4 w6 0.7050 0.4316 0.8266
[3799 rows x 6 columns]
对于每个主题(例如上面预览中显示的S03和S26),我需要获得每个窗口的平均值:mean,stdev和rms(预览中显示的窗口1,2,5和6)。 / p>
每个窗口的行数在所有主题中都不同(例如,窗口1对于S05可以是6行,对于S13可以是15行)。
所以我需要检查column ='sub'中的主题字符串和column ='window'中的窗口字符串,以检查这些行是否属于同一个subejct和window,然后计算平均值的平均值, stdev和rms列。
答案 0 :(得分:3)
这也可行:
df.groupby(['sub', 'window']).agg([np.average])
答案 1 :(得分:2)
如果我理解你的问题,这应该有效:
df.groupby(['sub', 'window']).agg({'mean':['mean'], 'stdev':['mean'],
'rms': ['mean']})