pandas.series.replace()inplace=True不工作

2024-09-27 07:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas.Series{},其中包含所有文本:

enter image description here

我想删除所有标点符号,因此我执行了以下操作:

for i in range(len(des)):
for ch in punc:
    if ch in des[i]:
        des[i] = des[i].replace(ch, "", inplace=True)

然而,我得到了一个"TypeError: replace() takes no keyword arguments"

我怎样才能修好它?还有,有没有更有效的方法删除一系列文本中所有行的标点符号


Tags: in文本truepandasforlenifrange
3条回答

首先,在内部for循环中有一个缩进错误。 其次,考虑到适当的缩进,问题背后的问题是dataframe和String的.replace()方法具有不同的函数签名。您要做的是,使用dataframe的replace()方法,但使用的是字符串的replace()方法。你可以在这里检查:https://stackoverflow.com/a/50843478/9851541 或者,您也可以检查How to use the replace() method with keyword arguments to replace empty strings以了解您的问题。希望这有帮助

您可以创建要替换的项的字典,并在pandas.DataFrame.replace中使用它

# create a dictionary 'mydict'
mydict = {item:"" for item in punc}

# replace the column 'FullDescription` in your data frame 'des', using the created dictionary

des = des.replace({"FullDescription": mydict},regex=True)

#if des is a series use
des = des.replace(mydict,regex=True)

inplace=True的返回为None(即,使用就地替换时无需重新分配)

#Using inplace for dataframe
des.replace({"FullDescription": mydict},regex=True,inplace=True)
#Using inplace for dataseries
des.replace(mydict,regex=True,inplace=True)

我对你的问题的解释可能不正确,但如果你在punc中循环浏览标点符号列表,并且你想在保留其余文本的同时删除所有标点符号,我认为你可以做一些简单的事情,如以下所示:

for ch in punc:
    des = des.str.replace(ch, "")

您可能知道,replace是用一系列字符替换另一系列字符的标准python字符串方法。例如:

'abc'.replace('b', 'z')

返回'azc'

当您使用Series.str.replace()时,您使用的是相同的字符串替换方法,但现在它将应用于序列中的每个元素。另外,所有字符串方法都可以使用相同的语法Series.str.some_string_method()以元素方式应用于一个系列

相关问题 更多 >

    热门问题