AttributeError: 'PandasArray' 对象没有属性 '_str_replace'

时间:2021-01-08 16:55:58

标签: python-3.x pandas dataframe series

我正在尝试学习 Pandas 来执行包括大量文本数据处理的工作,因此我一直在探索可用于处理文本数据的方法。我首先通过尝试在系列上使用 .str.replace() 遇到这个问题,例如我尝试在使用 pd.Series() 方法构造的系列上使用它,然后我尝试从数据帧中提取一列并使用该系列的方法。两次我都收到一个错误,即无法在“PandasArray”对象上调用该方法。我进一步测试了其他一些字符串方法,例如 .str.contains()、.str.startswith()、.str.title() 但收到相同的错误。在重新测试代码以检查我没有在其他地方使用这些名称之前,我关闭了 jupyter notebook 并重新启动了我的计算机。我尝试使用

重新安装熊猫
conda install pandas --force--reinstall

但我继续收到错误消息。我使用

检查了1.1.5的版本
pd.__version__

我不确定为什么它将我的系列解释为“pandasarray”。字符串方法对我很重要,但我不确定如何解决这个问题。我在家里的个人电脑上使用相同的代码尝试了这些方法,并且运行正常,我认为重新安装 Pandas 可以解决问题。这是我多次测试的代码:

import pandas as pd
import numpy as np
testseries = pd.Series(['Foo','Foh',np.nan])
testseries.str.replace(r'Fo','Ba')
testdataframe = pd.DataFrame({'a':['Foo','Foh',np.nan],'b':['Foo','Foh',np.nan]})
testdataframe['a'].str.replace('Fo','Ba')

错误信息:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-11-0067b28206a2> in <module>
----> 1 testdataframe['a'].str.replace('Fo','Ba')

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\strings\accessor.py in wrapper(self, *args, **kwargs)
     99                 )
    100                 raise TypeError(msg)
--> 101             return func(self, *args, **kwargs)
    102 
    103         wrapper.__name__ = func_name

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\strings\accessor.py in replace(self, pat, repl, n, case, flags, regex)
   1310                 warnings.warn(msg, FutureWarning, stacklevel=3)
   1311             regex = True
-> 1312         result = self._array._str_replace(
   1313             pat, repl, n=n, case=case, flags=flags, regex=regex
   1314         )

AttributeError: 'PandasArray' object has no attribute '_str_replace'

2 个答案:

答案 0 :(得分:0)

在我的环境 python 3.8 和 Pandas 版本 1.1.3 中,代码运行良好。在任何情况下,您都可以尝试使用 numpy 进行字符串操作,不会出现版本问题看看它是否符合您的要求。

答案 1 :(得分:0)

在使用 pandas 1.1.3(在 conda 环境中)时遇到了同样的问题。更新到 1.2.0 解决了