I think I understood what you wanted to do and what you did not understand (mainly about the way to modifiy objects with pandas). I assume that you wanted to:

  1. compute your aggregation by payment date in data
  2. and then set its index to 'Payment date' field

Short answer: if you want to have this result into data, simply execute:

data = data.groupby('Payment date ')['Payment amount'].sum().to_frame()

'Payment date ' will be your new index, to_frame prevents your single column resulting dataframe to be squeezed into a pandas Series (which I think was your first intention to avoid, resetting your index to then set it back).

Let's dive into your code.

First line

data = data.groupby('Payment Date ')

First line is ok, but might not do exactly what you want. You are taking data, which I assume is a pandas DataFrame and reaffect it a pandas DataFrameGroupBy object. This kind of object does not hold any data, you can see it simply as a mapping between index(s) of your original DataFrame and associated groups (here, payment dates).

Anyway, you got your groupby object into data.

Second line

data['Payment Amount '].sum().reset_index()

This line does nothing. It shows the result of the computation in your Jupyter notebook, but nothing has been changed in data. data is still the same DataFrameGroupBy object.

Third line

data = data.set_index('Payment Date ', inplace  = True)

An exception is raised, saying that a DataFrameGroupBy objet has no set_index method. This is because data has not been changed by your second line of code. Even so, I would encourage you to avoid using inplace=True anytime in your code. You should always go with explicit reassignements.

Your code could look like (if you don't like the short answer above):

data = data.groupby('Payment date ')
data = data['Payment amount'].sum().reset_index()
data = data.set_index('Payment date ')  # No inplace=True!
Answer from Pierre Massé on Stack Overflow
Top answer
1 of 1
5

I think I understood what you wanted to do and what you did not understand (mainly about the way to modifiy objects with pandas). I assume that you wanted to:

  1. compute your aggregation by payment date in data
  2. and then set its index to 'Payment date' field

Short answer: if you want to have this result into data, simply execute:

data = data.groupby('Payment date ')['Payment amount'].sum().to_frame()

'Payment date ' will be your new index, to_frame prevents your single column resulting dataframe to be squeezed into a pandas Series (which I think was your first intention to avoid, resetting your index to then set it back).

Let's dive into your code.

First line

data = data.groupby('Payment Date ')

First line is ok, but might not do exactly what you want. You are taking data, which I assume is a pandas DataFrame and reaffect it a pandas DataFrameGroupBy object. This kind of object does not hold any data, you can see it simply as a mapping between index(s) of your original DataFrame and associated groups (here, payment dates).

Anyway, you got your groupby object into data.

Second line

data['Payment Amount '].sum().reset_index()

This line does nothing. It shows the result of the computation in your Jupyter notebook, but nothing has been changed in data. data is still the same DataFrameGroupBy object.

Third line

data = data.set_index('Payment Date ', inplace  = True)

An exception is raised, saying that a DataFrameGroupBy objet has no set_index method. This is because data has not been changed by your second line of code. Even so, I would encourage you to avoid using inplace=True anytime in your code. You should always go with explicit reassignements.

Your code could look like (if you don't like the short answer above):

data = data.groupby('Payment date ')
data = data['Payment amount'].sum().reset_index()
data = data.set_index('Payment date ')  # No inplace=True!
🌐
GitHub
github.com › pandas-dev › pandas › issues › 11640
BUG AttributeError: 'DataFrameGroupBy' object has no attribute '_obj_with_exclusions' · Issue #11640 · pandas-dev/pandas
November 18, 2015 - In [5]: df.groupby('a').mean() --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-29-a830c6135818> in <module>() ----> 1 df.groupby('a').mean() /home/nicolas/Git/pandas/pandas/core/groupby.py in mean(self) 764 self._set_selection_from_grouper() 765 f = lambda x: x.mean(axis=self.axis) --> 766 return self._python_agg_general(f) 767 768 def median(self): /home/nicolas/Git/pandas/pandas/core/groupby.py in _python_agg_general(self, func, *args, **kwargs) 1245 output[name] = self._try_cast(values[mask], result)
Author   nbonnotte
Discussions

Pandas set_index error with calplot
df2 = df2.groupby(['last date read'])['read count'].sum() This returns a series (groupby object, selecting a single column, and summing). I don't work with plotly, but I assume it expects the input to be a dataframe, not series? If you do df2.reset_index(), that should return an object that pops the index (groupby variable) back into the data columns and make a dataframe for you to use. More on reddit.com
🌐 r/learnpython
2
0
March 28, 2023
python - AttributeError: 'DataFrame' object has no attribute 'group' - Stack Overflow
Communities for your favorite technologies. Explore all Collectives · Stack Overflow for Teams is now called Stack Internal. Bring the best of human thought and AI automation together at your work More on stackoverflow.com
🌐 stackoverflow.com
ENH: DataFrameGroupby.value_counts
I have checked that this issue has not already been reported. I have confirmed this bug exists on the latest version of pandas. I have confirmed this bug exists on the master branch of pandas. Repr... More on github.com
🌐 github.com
4
September 14, 2021
python 3.x - AttributeError: Cannot access callable attribute 'reset_index' of 'DataFrameGroupBy' objects, try using the 'apply' method - Stack Overflow
I am very new to pandas and trying to use groupby. I have a df with multiple columns. I want to groupby a particular column and then sort each group based on a different column. I want to groupby c... More on stackoverflow.com
🌐 stackoverflow.com
🌐
Stack Overflow
stackoverflow.com › questions › 46534653 › error-attributeerror-dataframegroupby-object-has-no-attribute-while-groupby
python - Error 'AttributeError: 'DataFrameGroupBy' object has no attribute' while groupby functionality on dataframe - Stack Overflow
The problem is it not identifying the NEWS_SENTIMENT_DAILY_AVG column. Error message - AttributeError: 'DataFrameGroupBy' object has no attribute 'NEWS_SENTIMENT_DAILY_AVG' ... Reset_index works for index, not columns...
🌐
Pandas
pandas.pydata.org › pandas-docs › version › 1.1 › reference › groupby.html
GroupBy — pandas 1.1.5 documentation
The following methods are available only for DataFrameGroupBy objects. pandas.api.indexers.VariableOffsetWindowIndexer.get_window_bounds pandas.core.groupby.GroupBy.__iter__
🌐
Kaggle
kaggle.com › code › hashbanger › grouping-sorting-in-pandas
Checking your browser - reCAPTCHA
Checking your browser before accessing www.kaggle.com · Click here if you are not automatically redirected after 5 seconds
🌐
Reddit
reddit.com › r/learnpython › pandas set_index error with calplot
r/learnpython on Reddit: Pandas set_index error with calplot
March 28, 2023 -

I have a dataframe that I've moved down to two columns 'last date read' and 'read count'. I formatted it to %Y-%m and then grouped it using the dates and summed the total amount of books read.

I wanted to plot it using month_calplot from plotly_calplot but I get the following error and I'm not sure where to go from here:

Error:

line 247, in month_calplot
    gData = data.set_index(x)[y].groupby(Grouper(freq="M")).sum()
  File "C:\Python\Python310\lib\site-packages\pandas\core\generic.py", line 5575, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'set_index'

Code:

df2 = df2[['last date read', 'read count']]
df2['last date read'] = pd.to_datetime(df2['last date read'])
df2['last date read'] = df2['last date read'].dt.strftime('%Y-%m')

df2 = df2.groupby(['last date read'])['read count'].sum()

print(df2)
fig3 = month_calplot(
    df2,
    x='last date read',
    y='read count',
    colorscale="Purpor",
    showscale=True,
    total_height=250,
    dark_theme=True)
Find elsewhere
🌐
CopyProgramming
copyprogramming.com › howto › error-attributeerror-dataframegroupby-object-has-no-attribute-while-groupby-functionality-on-dataframe
Python: DataFrameGroupBy Object Does Not Have Attribute Error Occurs When Using Groupby Functionality on DataFrame
April 22, 2023 - The outcome of the program is an AttributeError that indicates the inability to reach the 'drop_duplicates' attribute of ' DataFrameGroupBy' object s. Instead, it suggests using the 'apply' method. Saving groupby output content to a file with Python pandas . week_grouped.reset_index().to_c...
🌐
CopyProgramming
copyprogramming.com › howto › dataframegroupby-object-has-no-attribute-index
Python: Index Attribute Not Found in Dataframegroupby Object
April 7, 2023 - Error 'AttributeError: 'DataFrameGroupBy' object has no, Thanks for thisbut I'm getting "AttributeError: 'SeriesGroupBy' object has no attribute 'sample'" at "df_sample = df.groupby("persons").sample(frac=percentage_to_flag, random_state=random_state)". Cannot access callable attribute 'set_index' of …
🌐
GitHub
github.com › pandas-dev › pandas › issues › 43564
ENH: DataFrameGroupby.value_counts · Issue #43564 · pandas-dev/pandas
September 14, 2021 - import pandas as pd df = pd.DataFrame({'gender': ['female', 'male', 'female', 'male', 'female', 'male'], 'education': ['low', 'medium', 'high', 'low', 'high', 'low'], 'country': ['US', 'FR', 'US', 'FR', 'FR', 'US']}) # These all work fine: # value_counts() on a DataFrame df[['gender', 'education']].value_counts(normalize=True) df['gender'].value_counts(normalize=True) # on a Series df.groupby('country')['gender'].value_counts(normalize=True) # on a SeriesGroupby # but fails on DataFrameGroupBy df.groupby('country')[['gender', 'education']].value_counts(normalize=True) -------------------------
Author   corriebar
🌐
Saturn Cloud
saturncloud.io › blog › solving-the-attributeerror-cannot-access-callable-attribute-groupby-of-dataframegroupby-objects-in-pandas
Solving the AttributeError: Cannot Access Callable Attribute 'groupby' of 'DataFrameGroupBy' Objects in Pandas | Saturn Cloud Blog
September 11, 2023 - Pandas is a powerful data manipulation library in Python, widely used by data scientists for its robustness and versatility. However, it's not uncommon to encounter errors while working with it. One such error is the AttributeError: Cannot access callable attribute 'groupby' of 'DataFrameGroupBy' ...
🌐
GitHub
github.com › dask › dask › issues › 2040
AttributeError: 'tuple' object has no attribute 'groupby · Issue #2040 · dask/dask
March 4, 2017 - --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-205-e8ff0304bc2c> in <module>() ----> 1 df.set_index("x", divisions=[0, 2, 5, 8, 10, 12, 14], sorted=True).groupby("y").count().compute() /path/to/python3.6/site-packages/dask/base.py in compute(self, **kwargs) 92 Extra keywords to forward to the scheduler ``get`` function.
Author   LostInOverflow
🌐
Stack Overflow
stackoverflow.com › questions › 76699686 › dataframegroupby-object-has-no-attribute-reset-index
python - DataFrameGroupBy' object has no attribute 'reset_index'? - Stack Overflow
You need to perform an operation in between, e.g. count() to get the number of entries per ['hour', 'dt']: df_new = df.groupby(['hour','dt']).count().reset_index() ... Find the answer to your question by asking. Ask question ... See similar questions with these tags. ... Community Asks Sprint Announcement – January 2026: Custom site-specific badges! ... D.C. al fine and repeats in the same bar for ABABA · Does Occam's razor (the idea that theories should be as parsimonious as possible) implicitly set limits on how parsimonious they can ultimately be?
🌐
Reddit
reddit.com › r/learnpython › pandas attributeerror: 'dataframe' object has no attribute 'group_by'
r/learnpython on Reddit: Pandas AttributeError: 'DataFrame' object has no attribute 'group_by'
February 28, 2018 -

Hello,

Has anyone ever come across this before?

I'm trying to group some data in a dataframe and getting this error. The steps I've taken are:

  1. in a for loop:

read in a csv from an api using pd.read_csv() replaced some values in a column using a for loop and .loc[] appended the resulting data frame to a list

2) concatenated the list of dataframes using pd.concat()

3) added a calculated column to the new DF by multiplying another column

4) added two empty columns

5) filtered the DF using .loc[] based on a value within a column

6) filtered the DF using .loc[] based on a value in a different column

7) tried to use this code:

new_DF = old_df.group_by(['col1', 'col_2', 'col_3', 'adgroup', 'col_4', 'col5', 'col6'], as_index=False)[['col7', 'col8', 
'col9']].sum()

The DF seems to behaving normally for example I can do dtypes and columns on it and add columns which are calculated from other columns. What is super frustrating is that I can do pd.to_csv() and then pd.read_csv() on the DF and then I'm able to do the grouping I want (however this isn't ideal which is why I'm posting).

Any advice would be appreciated.

Cheers

🌐
Quora
quora.com › How-do-you-fix-pandas-that-have-no-attribute-dataframe
How to fix pandas that have no attribute dataframe - Quora
Stack method works with the MultiIndex objects in DataFrame, it returning a DataFrame with an index with a new inner-most level of row labels.
🌐
Kaggle
kaggle.com › questions-and-answers › 511815
Convert DataFrameGroupBy object to a DataFrame
Checking your browser before accessing www.kaggle.com · Click here if you are not automatically redirected after 5 seconds