'AttributeError: 'Series' object has no attribute 'Year'
I'm using a dataframe and convert the time column to years and months like this:
consumer_confidence = pd.read_csv('consumer_confidence.csv')
business_confidence = pd.read_csv('business_confidence.csv')
consumer_confidence['Year'] = pd.to_datetime(consumer_confidence['TIME']).dt.year
consumer_confidence['Month'] = pd.to_datetime(consumer_confidence['TIME']).dt.month
business_confidence['Year'] = pd.to_datetime(business_confidence['TIME']).dt.year
business_confidence['Month'] = pd.to_datetime(business_confidence['TIME']).dt.month
business_confidence = business_confidence.groupby('Year')['Value'].sum()
consumer_confidence = consumer_confidence.groupby('Year')['Value'].sum()
Attempting the .groupby() statements result in this error:
AttributeError: 'Series' object has no attribute 'Year'
I am unsure how to resolve this as 'Year' should now be a column in the dataframe. Could someone explain my error here?
Solution 1:[1]
Your code (with some sample inputs as shown below) works fine for me:
import pandas as pd
'''
consumer_confidence = pd.read_csv('consumer_confidence.csv')
business_confidence = pd.read_csv('business_confidence.csv')
'''
consumer_confidence = pd.DataFrame({'TIME':['2021-01-01', '2021-02-01', '2022-04-11', '2022-04-12'], 'Value':[1,2,3,4]})
business_confidence = pd.DataFrame({'TIME':['2020-01-01', '2021-02-01', '2022-04-11', '2022-04-12'], 'Value':[5,6,7,8]})
print(consumer_confidence)
print(business_confidence)
consumer_confidence['Year'] = pd.to_datetime(consumer_confidence['TIME']).dt.year
consumer_confidence['Month'] = pd.to_datetime(consumer_confidence['TIME']).dt.month
business_confidence['Year'] = pd.to_datetime(business_confidence['TIME']).dt.year
business_confidence['Month'] = pd.to_datetime(business_confidence['TIME']).dt.month
print(consumer_confidence)
print(business_confidence)
business_confidence = business_confidence.groupby('Year')['Value'].sum()
consumer_confidence = consumer_confidence.groupby('Year')['Value'].sum()
print(consumer_confidence)
print(business_confidence)
Output:
TIME Value
0 2021-01-01 1
1 2021-02-01 2
2 2022-04-11 3
3 2022-04-12 4
TIME Value
0 2020-01-01 5
1 2021-02-01 6
2 2022-04-11 7
3 2022-04-12 8
TIME Value Year Month
0 2021-01-01 1 2021 1
1 2021-02-01 2 2021 2
2 2022-04-11 3 2022 4
3 2022-04-12 4 2022 4
TIME Value Year Month
0 2020-01-01 5 2020 1
1 2021-02-01 6 2021 2
2 2022-04-11 7 2022 4
3 2022-04-12 8 2022 4
Year
2021 3
2022 7
Name: Value, dtype: int64
Year
2020 5
2021 6
2022 15
Name: Value, dtype: int64
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | constantstranger |
