在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