Python 如何使用带关键字参数的replace()方法替换空字符串
我尝试使用pandas.DataFrame.replace()通过下面的代码填充帧中的空字符串 主数据集=[列车数据、测试数据、高度数据1、高度数据2]Python 如何使用带关键字参数的replace()方法替换空字符串,python,pandas,Python,Pandas,我尝试使用pandas.DataFrame.replace()通过下面的代码填充帧中的空字符串 主数据集=[列车数据、测试数据、高度数据1、高度数据2] for data in main_datasets: for x in data: if type(x) == 'int': x.fillna(x.median(), inplace = True) elif type(x) == 'float': x.fi
for data in main_datasets:
for x in data:
if type(x) == 'int':
x.fillna(x.median(), inplace = True)
elif type(x) == 'float':
x.fillna(x.median(), inplace = True)
else:
x.replace(to_replace = None, value = 'N/A', inplace = True)
但是,尽管使用字符或数字作为关键字值并删除关键字名称,我仍然收到以下异常:
TypeError: replace() takes no keyword arguments
为什么从“值='N/A'”引发此错误?”
以下是一些字段的特别示例(用逗号分隔):
12123423,0,M,Y,120432.5
12654423,1,F,N,80432.5
12123423,0,M,Y,120432.5
12123423,0,M,Y,120432.5
您试图使用
pandas.DataFrame.replace()
方法,但实际使用的是string.replace
方法
我怀疑所有这些都会失败,但您首先在notint
和notfloat
案例中遇到了失败。如果x是一个int,那么它就不是一个数据帧,并且不会有.fillna
方法。类似地,字符串具有Python的replace方法,但该方法具有不同的函数签名
vs
str.replace(旧的、新的[,最大值])
vs
DataFrame.replace(to_replace=None,value=None,inplace=False,limit=None,regex=False,method='pad',axis=None)
我还怀疑您正在尝试使用而不是键入。您正在尝试使用
pandas.DataFrame.replace()
方法,但实际使用的是string.replace
方法
我怀疑所有这些都会失败,但您首先在notint
和notfloat
案例中遇到了失败。如果x是一个int,那么它就不是一个数据帧,并且不会有.fillna
方法。类似地,字符串具有Python的replace方法,但该方法具有不同的函数签名
vs
str.replace(旧的、新的[,最大值])
vs
DataFrame.replace(to_replace=None,value=None,inplace=False,limit=None,regex=False,method='pad',axis=None)
我还怀疑您试图使用而不是键入。
正如在评论中提到的那样,就这么做吧
x.replace(None, 'N/A', True)
正如在评论中提到的那样,就这么做吧
x.replace(None, 'N/A', True)
您可以发布一个小样本的数据帧与期望的输出?请参阅:您收到的错误消息是因为您正在将关键字参数传递给
replace()
方法,这太令人惊讶了/您需要传递位置参数。尝试replace(None,'N/A',True)
:)您可以发布一个带有所需输出的数据帧的小样本吗?请参阅:您收到的错误消息是因为您正在将关键字参数传递给replace()
方法,这太令人惊讶了/您需要传递位置参数。尝试替换(无,'N/A',True):)我不确定该链接与您的答案有什么关系。另外,如果发布评论中的答案,一般来说,你会希望它成为一个社区维基。@Zev是的,我的帖子不好,我会发表评论,但我还不能,因为我没有足够的分数。我认为你上面的答案是正确的。我不确定这个链接和你的答案有什么关系。另外,如果发布评论中的答案,一般来说,你会希望它成为一个社区维基。@Zev是的,我的帖子不好,我会发表评论,但我还不能,因为我没有足够的分数。我认为你上面的答案是正确的。是的,我尝试使用dtype,但我在使用数据框中的字段时不断收到错误。如果我理解正确,名称空间中还有另一个replace()方法。更类似于不同类上的不同方法。当您使用点表示法时,这是在访问不同的名称空间。这很有意义。我认为不同的方法在完全不同的模块中。但是,我仍然不明白为什么作为int的x不能作为数据帧访问.fillna()方法。你是说pd.DataFrame对象不将数字输入识别为“int”数据类型吗?一系列(或df中的列)int与实际int不同。如果你只使用实际int,如5
,它就不再具有pandasTryprint(x,type(x))中的方法
并查看您是否得到类似int
或string
的灵长类。如果是这样,灵长类动物就无法访问其容器的方法。当您想对列执行操作时,您可能正在对项执行操作。是的,我尝试使用dtype,但使用数据框中的字段时一直收到错误。如果我理解正确,名称空间中还有另一个replace()方法。更类似于不同类上的不同方法。当您使用点表示法时,这是在访问不同的名称空间。这很有意义。我认为不同的方法在完全不同的模块中。但是,我仍然不明白为什么作为int的x不能作为数据帧访问.fillna()方法。你是说pd.DataFrame对象不将数字输入识别为“int”数据类型吗?一系列(或df中的列)int与实际int不同。如果你只使用实际int,如5
,它就不再具有pandasTryprint(x,type(x))中的方法
并查看您是否得到类似int
或string
的灵长类。如果是这样,灵长类动物就无法访问其容器的方法。当您想对列执行操作时,您可能正在对项执行操作。