Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.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 如何在没有NAN的情况下运行月平均值循环_Python_Pandas - Fatal编程技术网

Python 如何在没有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] [

这里的编码新手,有人知道如何从创建月平均值的循环中删除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])
    。然而,这很难理解,所以我只想:
  • 范围(12)内的i的
    :
    av[i]=np.nanmean(数据z[time.month==i+1]);
    
  • python中不需要分号
  • 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新手的话。