I'm trying to learn pandas to perform a job that includes a lot of wrangling with text data so I've been exploring the methods available for working with text data. I first encountered this problem by trying to use the .str.replace() on a series, for example I tried using it on a Series constructed using the pd.Series() method, and then I tried extracting a column from a dataframe and using the method on that series. Both times I receive an error that the method can't be called on a 'PandasArray' object. I further tested some other string methods such as .str.contains(), .str.startswith(), .str.title() but receive the same error. I closed jupyter notebook and restarted my computer before retesting the code to check I wasn't using the names somewhere else. I tried reinstalling pandas using
conda install pandas --force--reinstall
but I continue to receive the error. I checked the version which is 1.1.5 using
pd.__version__
I am not sure why it's interpreting my series as a 'pandasarray'. The string methods are important for me, but I'm unsure how to solve this. I tried these methods on my personal computer at home using the same code and it worked properly, I thought that reinstalling pandas would fix the issue. Here's the code I tested with multiple times:
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')
Error message:
---------------------------------------------------------------------------
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'