Python中的条件平均值

我有一个问题操纵我的Excel中的Python文件。 我有一个大型的Excel文件,数据按date/时间排列。 我希望能够在一天中的特定时间,在所有不同的日子里平均数据; 即。 创造1天以上的气体浓度平均值。

这里是我的Excel文件的示例:

Decimal Day of year Decimal of day Gas concentration 133.6285 0.6285 46.51230 133.6493 0.6493 47.32553 133.6701 0.6701 49.88705 133.691 0.691 51.88382 133.7118 0.7118 49.524 133.7326 0.7326 50.37112 

基本上我需要一个函数,比如excel中的AVERAGEIF函数,它会显示类似于“当decimal_of_day = x时平均gas_concentrations ”但是我真的不知道该怎么做。 目前我已经得到了这个

 import xlrd import numpy as np book= xlrd.open_workbook('TEST.xlsx') level_1=book.sheet_by_index(0) time_1=level_1.col_values(0, start_rowx=1, end_rowx=1088) dectime_1=level_1.col_values(8, start_rowx=1, end_rowx=1088) ozone_1=level_1.col_values(2, start_rowx=1, end_rowx=1088) ozone_1 = [float(i) if i != 'NA' else 'NaN' for i in ozone_1] 

编辑

我更新了我的脚本以包含以下内容

 ozone=np.array(ozone_1, float) time=np.array(dectime_1) a=np.column_stack((ozone, time)) b=np.where((a[:,0]<0.0035)) print b 

编辑目前我解决了这个问题,把两个variables放到一个数组中,然后用一个我需要平均的variables做一个更小的数组 – 效率有点低,但是起作用了!

 ozone=np.array(ozone_1, float) time=np.array(dectime_1) a=np.column_stack((ozone, time)) b=a[a[:,1]<0.0036] c=np.nanmean(b[:,0]) 

你可以使用numpy的蒙面数组 。

 import numpy as np data_1 = np.ma.arange(10) data_1 = np.ma.masked_where(<your if statement>, data_1) data_1_mean = np.mean(data1) 

希望有所帮助