Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的条件groupby_Python_Pandas_Group By - Fatal编程技术网

python中的条件groupby

python中的条件groupby,python,pandas,group-by,Python,Pandas,Group By,我正在使用一个名为Ozon的数据帧。它有一个名为O3的列和一个DatetimeIndex。现在,我创建了一个新的数据框,以便获得每天的平均臭氧值: dailymeanozon = ozon.groupby(pd.Grouper(freq='1D')).mean() 这很好,但是在一些日子里,(正确的)臭氧测量的数量非常少。因此,在一些日子里,臭氧的日平均值并不能代表全天。因此,我希望groupby函数排除值小于X的天数。或者,也可以这样做:如果一天有许多NaN值,则将其排除在外 这似乎是一个简

我正在使用一个名为
Ozon
的数据帧。它有一个名为
O3
的列和一个DatetimeIndex。现在,我创建了一个新的数据框,以便获得每天的平均臭氧值:

dailymeanozon = ozon.groupby(pd.Grouper(freq='1D')).mean()
这很好,但是在一些日子里,(正确的)臭氧测量的数量非常少。因此,在一些日子里,臭氧的日平均值并不能代表全天。因此,我希望
groupby
函数排除值小于X的天数。或者,也可以这样做:如果一天有许多NaN值,则将其排除在外


这似乎是一个简单的问题,但我对python非常陌生,所以我无法理解它。因此,非常感谢所有的帮助

有几种方法可以解决这个问题,但这可能是最简单的方法之一:计算每天的测量次数,并使用这些信息过滤每日平均数据帧。来自
pandas
.count
函数的属性是,它只计算不属于
None
的行,这基本上就是您想要的。这应该给你一个印象:

导入熊猫
随机输入
#一些测试数据
ozon=pandas.DataFrame({
“日期”:熊猫。日期范围(start=“1/1/2020”,end=“14/1/2020”,freq=“H”)
})
ozon[“O3”]=[范围内(ozon.shape[0])的随机随机随机数(0,10)]
ozon.loc[ozon.sample(分形=0.5,替换=True,随机状态=1)。index.values,“O3”]=无
ozon=ozon.set_索引(“日期”)
#指定应该有多少个非Na值可用
最小测量值=14
#计算组的计数,不包括缺少的值
每日计数=ozon.groupby(pandas.Grouper(freq=“1D”)).count()
每日计数=每日计数。loc[每日计数[“O3”]>=最小测量值]
#你的职能
每日平均值=ozon.groupby(pandas.Grouper(freq=“1D”)).mean()
#选择当天至少有最小值测量值的日平均臭氧层线
每日平均值=每日平均值。loc[每日计数。loc[每日计数[“O3”]>=最小测量数]。索引]

这是否回答了您的问题?好极了非常感谢你!但是,daily_uMean_uOzon不会用NaN值填充空日。但是我用:
dailymanozon=dailymanozon.set_index(dailymanozon.index)。重采样('1D').sum()。替换(0.00,pd.NA)