Python 如何在没有NAN的情况下运行月平均值循环
这里的编码新手,有人知道如何从创建月平均值的循环中删除nan值吗? 这是我的代码:Python 如何在没有NAN的情况下运行月平均值循环,python,pandas,Python,Pandas,这里的编码新手,有人知道如何从创建月平均值的循环中删除nan值吗? 这是我的代码: c=0 av=np.零([12,1]) 对于范围(1,13)内的i: av[c]=np.nanmean(数据z[time.month==i]) c=c+1 打印(av) 这就是结果: [[82.83672087] [53.67317073] [48.88129252] [52.04382826] [ nan] [ nan] [ nan] [
c=0
av=np.零([12,1])
对于范围(1,13)内的i:
av[c]=np.nanmean(数据z[time.month==i])
c=c+1
打印(av)
这就是结果:
[[82.83672087]
[53.67317073]
[48.88129252]
[52.04382826]
[ nan]
[ nan]
[ nan]
[ nan]
[ nan]
[ nan]
[52.25087788]
[81.22294607]]
非常感谢您的帮助。请尽量简单,因为这是我第一次使用Python,我已经尝试过为它寻找修复方法,但它太复杂了,难以理解!:) 因为您要求使用“尽可能简单”的方法,所以可以将所有非nan值附加到新列表中
av_new = []
for item in av:
if not np.isnan(item):
av_new.append(item)
虽然这些事情中的大多数都不是关于你的问题(这不是:b),但我想给你一些一般性的提示:
c
,因为它总是等于i-1
。因此,使用c
的行变成av[i-1]=np.nanmean(dataz[time.month==i])
。然而,这很难理解,所以我只想::
av[i]=np.nanmean(数据z[time.month==i+1]);
av
不需要是一个numpy数组,因为你没有对它做很多数学运算。要学习python的基础知识,请尝试使用内置类型,如list
,然后逐步学习数学库,如numpy
,pandas
。。。稍后。也许退房av
当前是一个数组数组,每个内部数组正好有一个元素。如果这不是一个要求,您应该尝试简化它(并搜索额外数组的来源)。如果这不起作用,请留下评论,我将尝试编辑我的答案根据您的评论,您希望将nan值替换为零。我会这样做:
av=[]
对于范围(12)内的i:
月平均数=np.nanmean(数据z[时间月==i+1])
如果月平均值!=月平均值:
月平均值=0
平均附加值(月平均值)
如果月平均值!=月平均值
检查NaN对你来说太不神圣了(请参阅),你也可以使用类似于np.isnan(月平均值)
最后,如果你想给人留下深刻印象:
av=[x代表x在[np.nanmean(dataz[time.month==i+1])范围(12)]内的i,如果x==x,则为0]
如果您想知道这是如何工作的,请查看。欢迎来到stackoverflow!查看并阅读列表理解(av不需要是numpy数组)。还有,你到底想做什么?删除nan值,或将其替换为0或其他完全不同的值?谢谢!啊,好吧,我基本上是在抄袭教授给我的教程,所以我不知道我到底哪里出了问题!我只想将它们替换为0相同但较短(可读性较差):
av_new=[x代表x,如果不是np.isnan(x)]
这很好,但我认为这可能会让OP有点困惑,如果他是python新手的话。