Python 如何使用带关键字参数的replace()方法替换空字符串

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

我尝试使用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.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
方法

我怀疑所有这些都会失败,但您首先在not
int
和not
float
案例中遇到了失败。如果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
方法

我怀疑所有这些都会失败,但您首先在not
int
和not
float
案例中遇到了失败。如果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
,它就不再具有pandasTry
print(x,type(x))中的方法
并查看您是否得到类似
int
string
的灵长类。如果是这样,灵长类动物就无法访问其容器的方法。当您想对列执行操作时,您可能正在对项执行操作。是的,我尝试使用dtype,但使用数据框中的字段时一直收到错误。如果我理解正确,名称空间中还有另一个replace()方法。更类似于不同类上的不同方法。当您使用点表示法时,这是在访问不同的名称空间。这很有意义。我认为不同的方法在完全不同的模块中。但是,我仍然不明白为什么作为int的x不能作为数据帧访问.fillna()方法。你是说pd.DataFrame对象不将数字输入识别为“int”数据类型吗?一系列(或df中的列)int与实际int不同。如果你只使用实际int,如
5
,它就不再具有pandasTry
print(x,type(x))中的方法
并查看您是否得到类似
int
string
的灵长类。如果是这样,灵长类动物就无法访问其容器的方法。当您想对列执行操作时,您可能正在对项执行操作。