使用掩码计算DataFrame中的平均值

时间:2016-08-08 16:15:03

标签: python pandas dataframe

我有以下DataFrame:

   DATA            Price1            Price2               Price3
sys dis
27  0.8           43.89          83.06            33.75
    0.9           2.56           12.19            2.48
    1.0           42.28          1.87             1.93
    1.2           22.70          1.41             3.64
    1.4           20.38          1.36             2.02
28  0.8           22.024         35.47            16.96
    0.9           2.69           36.41            19.33
    1.0           59.30          8.90             11.41
    1.2           25.08          4.55             11.99
    1.4           26.85          3.30             7.37
    1.6           437.82         3.50             5.65
    1.8           55.21          2.91             1.84
    2.0           32.54          4.68             5.03
    2.5           52.91          5.42             6.58

我需要计算mean的{​​{1}}价格和dis < 1.0的单独价格。

我试图创建一个遮罩功能:

dis > 1.0

以为我收到以下错误:

  

属性错误:(&#34;&#39; Float64Index&#39;对象没有属性&#39;介于&#39;&#34;)。

3 个答案:

答案 0 :(得分:2)

您可以使用布尔比较器:

mean_low = df.loc[(df.index.get_level_values('dis') < 1.0), 'Price1'].mean()
mean_high = df.loc[(df.index.get_level_values('dis') > 1.0), 'Price1'].mean()

答案 1 :(得分:0)

最简单的解决方案是

df['price_low']=df.ix[df.reset_index()['dis'] < 1,'price']
df['price_high']=df.ix[df.reset_index()['dis']  > 1, 'price']

df.price_low.mean()
df.price_high.mean()

答案 2 :(得分:0)

IIUC:

idx_s = df.index.to_series()
lvl1 = idx_s.str.get(0)
gt_1 = np.where(idx_s.str.get(1) > 1, 'GT_1', 'LE_1')
df.groupby([lvl1, gt_1]).mean()

enter image description here