AttributeError: 'Series' object has no attribute 'items'
20,980
Use iteritems()
instead of items()
while iterating through a pandas series as
for (a, b) in df2[col].iteritems():
x = []
....
But iterating through each row is a very slow process for large data set. You can simply that part of code by using .apply()
function. Let me know if you need to simplify the code.
Author by
Carolina S
Updated on July 18, 2020Comments
-
Carolina S almost 4 years
I'm trying to work with a script a colleague wrote.
This part of the script is working fine:
xl = pd.ExcelFile(path + WQ_file) sheet_names = xl.sheet_names df = pd.read_excel(path + WQ_file, sheetname = 'Chemistry Output Table', skiprows = [0,1,2,4,5,6,7], index_col = [0,1], na_values = ['', 'na', '-']) df.index.names = ['Field_ID', 'Date_Time'] header = pd.read_excel(path + WQ_file, sheetname = 'header data', index_col = [0], na_values = ['', 'na', ' - ']) header_dict = {ah: header['name_short'].loc[ah] for ah in header.index} analytes_excel = pd.read_excel(path + WQ_file, sheetname = 'analytes', columns = 'name') analytes_list = [item for sublist in analytes_excel.values.tolist() for item in sublist] analytes = [header['name_short'].loc[x] for x in analytes_list]
But this part isn't:
# Clean up the data and report "less than" as half of the LOR df2 = df.copy() for col in df2.columns: x = [] for (a, b) in df2[col].items(): if b == " - ": b = np.nan try: b = float(b) except: b = float(b.strip('< '))/2 x.append(b) df2[col] = x
I get the following error:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-4-80ad8c096fc0> in <module>() 4 for col in df2.columns: 5 x = [] ----> 6 for (a, b) in df2[col].items(): 7 if b == " - ": 8 b = np.nan C:\Users\SardellaC\AppData\Local\Continuum\Anaconda\lib\site-packages\pandas\core\generic.pyc in __getattr__(self, name) 1938 1939 if name in self._internal_names_set: -> 1940 return object.__getattribute__(self, name) 1941 elif name in self._metadata: 1942 return object.__getattribute__(self, name) AttributeError: 'Series' object has no attribute 'items'
It might be something to do with different versions of Python used. I'm not familiar at all with Python and would appreciate if someone can point me in the right direction.