python pandas获取数据帧中与两个完全字符串匹配的行的平均值

时间:2018-02-06 20:20:23

标签: string pandas dataframe average

我有一个像这样格式化的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列。

2 个答案:

答案 0 :(得分:3)

这也可行:

df.groupby(['sub', 'window']).agg([np.average])

答案 1 :(得分:2)

如果我理解你的问题,这应该有效:

df.groupby(['sub', 'window']).agg({'mean':['mean'], 'stdev':['mean'],
    'rms': ['mean']})