python - “DataFrameGroupBy”对象没有属性 'set_index'

标签 python pandas dataframe python-3.7

我有一个数据帧数据。分组并重置索引后,我无法将日期列设置为索引。

data = data.groupby('Payment Date ')
data['Payment Amount '].sum().reset_index()

This is my output resetting index

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

错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-12-581b0b0bf83f> in <module>
----> 1 data = data.set_index('Payment Date ', inplace  = True)
      2 data.index

c:\users\nitro\appdata\local\programs\python\python37-32\lib\site-packages\pandas\core\groupby\groupby.py in __getattr__(self, attr)
    702 
    703         raise AttributeError(
--> 704             f"'{type(self).__name__}' object has no attribute '{attr}'"
    705         )
    706 

AttributeError: 'DataFrameGroupBy' object has no attribute 'set_index'

最佳答案

我想我明白你想要做什么和你不明白什么(主要是关于用 pandas 修改对象的方式)。我假设您想要:

  1. 数据中的付款日期计算聚合
  2. 然后将其索引设置为“付款日期”字段

简短回答:如果您想将此结果存入data,只需执行:

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

“付款日期”将是您的新索引,to_frame 防止您的单列结果数据帧被挤入 pandas Series (我认为这是您的第一个意图避免,重置索引然后将其设置回来)。

让我们深入研究您的代码。

第一行

data = data.groupby('Payment Date ')

第一行没问题,但可能不完全符合您的要求。您正在获取 data,我假设它是 pandas DataFrame 并将其重新影响为 pandas DataFrameGroupBy 对象。这种对象不保存任何数据,您可以将其简单地视为原始 DataFrame 的索引与关联组(此处为付款日期)之间的映射。

无论如何,您已将 groupby 对象放入 data 中。

第二行

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

这一行什么也不做。它显示了 Jupyter Notebook 中的计算结果,数据中没有任何更改。 data 仍然是相同的 DataFrameGroupBy 对象。

第三行

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

引发异常,表明 DataFrameGroupBy 对象没有 set_index 方法。这是因为第二行代码没有更改 data 。 即便如此,我还是鼓励您在代码中随时避免使用inplace=True。您应该始终显式重新分配。

您的代码可能如下所示(如果您不喜欢上面的简短答案):

data = data.groupby('Payment date ')
data = data['Payment amount'].sum().reset_index()
data = data.set_index('Payment date ')  # No inplace=True!

关于python - “DataFrameGroupBy”对象没有属性 'set_index',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65303206/

相关文章:

javascript - 批量编辑复杂文本文件

python - 从多个列表读取到 Pandas Dataframe 中

python - 无法安装 RAY

dataframe - 重新索引数据帧时出现问题 : Reindexing only valid with uniquely valued Index objects

python - Pandas 用特定的阈值计算每一列

python - 什么时候应该将函数的结果存储为 python 中的变量?

python - 属性错误 : 'Pool' object has no attribute '__exit__'

r - 显示data.frame中具有NA的列

python - 使用 Python 解析一个简单的文本文件

python - 连接两个数据帧并删除 Pandas 中的重复项