Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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_Python 3.x - Fatal编程技术网

在python中定义一个函数,使NaN值为零,参数数目可变

在python中定义一个函数,使NaN值为零,参数数目可变,python,python-3.x,Python,Python 3.x,我试图定义一个函数,它可以在输入数据帧的所有列的Nan值中填充零 该函数为数据框中的列名接受1个固定参数(数据框名称)和可变数量的参数 我正在使用下面的代码- def makeNa(df,*colnames): for col in colnames: return df.fillna({col:0},inplace=True) 当我只通过一个列名时,该函数工作,例如,makeNa(df_test,'USA')-它使列'USA'的所有Nan值为零 但是当输入多个列名时,

我试图定义一个函数,它可以在输入数据帧的所有列的
Nan
值中填充零

该函数为数据框中的列名接受1个固定参数(数据框名称)和可变数量的参数

我正在使用下面的代码-

def makeNa(df,*colnames):
    for col in colnames:
        return df.fillna({col:0},inplace=True)
当我只通过一个列名时,该函数工作,例如,
makeNa(df_test,'USA')
-它使列'USA'的所有Nan值为零
但是当输入多个列名时,该函数不起作用,例如,
makeNa(df_test,'USA','Japan')
-->它不会将列“Japan”中的Nan值归零。

如果不让循环结束,则在第一次迭代时返回。你可以这样做:

def makeNa(df,*colnames):
df[colnames]=df[colnames].filna(0)
返回df

您将返回for loop,而不是尝试返回外部。

考虑到您将返回美国,您对日本的期望是什么?可能的重复您应该更仔细地写下您的问题。python代码中没有缩进——特别是在定义函数时——通常是一个不好的标志。你说“它不工作”是什么意思?具体发生了什么?在
for
循环中有一个无条件的
return
语句;循环将只迭代一次。
def makeNa(df,*colnames):
    for col in colnames:
        df.fillna({col:0},inplace=True)
    return df