Attributeerror: ‘series’ object has no attribute ‘columns’

AttributeError: ‘Series’ object has no attribute ‘columns’

The error message ‘AttributeError: ‘Series’ object has no attribute ‘columns” occurs when trying to access the ‘columns’ attribute on a Pandas Series object. This typically happens when treating a Series object as a DataFrame or when trying to access/modify the column names of a Series.

Example:

Let’s consider the following code snippet:


import pandas as pd
data = {'Name': ['John', 'Adam', 'Emily'], 'Age': [24, 28, 22]}
df = pd.DataFrame(data)
name_series = df['Name']
print(name_series.columns)

This code will result in the ‘AttributeError’ since ‘name_series’ is a Series object created by selecting the ‘Name’ column from the DataFrame ‘df’, and Series objects do not have a ‘columns’ attribute.

Solution:

To fix this error, you can either treat the Series as a single-dimensional collection of values without column names or convert the Series back into a DataFrame if you need to access the ‘columns’ attribute specifically. Here are two possible solutions:


import pandas as pd
data = {'Name': ['John', 'Adam', 'Emily'], 'Age': [24, 28, 22]}
df = pd.DataFrame(data)

# Solution 1 - Treat series as values without column names
name_series = df['Name']
print(name_series)

# Solution 2 - Convert series back to DataFrame
name_df = name_series.to_frame()
print(name_df.columns)

In Solution 1, we simply access the ‘name_series’ without trying to access the ‘columns’ attribute since it doesn’t exist for Series. This will print:


0 John
1 Adam
2 Emily
Name: Name, dtype: object

In Solution 2, we convert the ‘name_series’ back into a DataFrame using the ‘to_frame()’ method. Now, we can access the ‘columns’ attribute on the ‘name_df’ DataFrame, resulting in:


Index(['Name'], dtype='object')

By following either of these solutions, you can resolve the ‘AttributeError: ‘Series’ object has no attribute ‘columns” error.

Similar post

Leave a comment