我有一个dataFramedata。在分组和重置索引后,我无法将日期列设置为索引。
data = data.groupby('Payment Date ')
data['Payment Amount '].sum().reset_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'
1条答案
按热度按时间6ojccjat1#
我想我明白你想做什么和你不明白什么(主要是关于用Pandas修改物体的方法)。我假设你想:
1.按
data
中的付款日期计算汇总1.然后将其索引设置为"付款日期"字段
简短回答:如果希望将此结果放入
data
,只需执行以下命令:"付款日期"将是您的新索引,
to_frame
防止您的单列结果 Dataframe 被挤压到PandasSeries
(我认为这是您的第一个意图,以避免,重置您的索引,然后设置回)。让我们深入研究您的代码。
第一行是可以的,但可能不是你想要的。你正在取
data
,我假设它是一个pandasDataFrame
,并将其reaffect为pandasDataFrameGroupBy
对象。这种对象不包含任何数据,你可以简单地将其视为原始DataFrame
的索引和关联组(这里是支付日期)之间的Map。不管怎样,你已经把groupby对象放到
data
中了。这一行什么也不做,它显示的是Jupyter笔记本中的计算结果,**但是
data
**中没有任何变化。data
仍然是相同的DataFrameGroupBy
对象。一个异常被抛出,表示一个
DataFrameGroupBy
对象没有set_index
方法。这是因为data
没有被你的第二行代码改变。即使如此,我还是建议你在代码中任何时候都要 * 避免 * 使用inplace=True
。你应该总是使用 * 显式的 * 重赋值。您的代码可能如下所示(如果您不喜欢上面的简短答案):