按索引分组的数据框

Posted

技术标签:

【中文标题】按索引分组的数据框【英文标题】:Dataframe group by index 【发布时间】:2020-11-20 03:04:35 【问题描述】:

示例数据框:

              A
date          
2010-01-01    1
2010-01-02    2
2010-02-01    3
2010-02-02    4
2010-03-01    5
2010-03-02    6

我想返回另一个按月份分组的数据框,所以我已经完成了:

month = df.groupby(df.index.to_period('M')).first()

# outcome

           A
date          
2010-01    1
2010-02    3
2010-03    5

如您所见,我实现了我的意图,但我只获得了每个月的第一个值。我想要的结果应该是。

           A
date          
2010-01    1
2010-01    2    
2010-02    3
2010-02    4
2010-03    5
2010-03    6

如果我这样做:

month = df.groupby(df.index.to_period('M'))

# without **.first()**

我什么也得不到。

有什么建议吗?

谢谢

【问题讨论】:

【参考方案1】:

你可以使用pd.DataFrame.to_period:

首先,确保您的索引是 DateTimeIndex:

df.index = pd.to_datetime(df.index)
df.to_period('M')

输出:

         A
date      
2010-01  1
2010-01  2
2010-02  3
2010-02  4
2010-03  5
2010-03  6

【讨论】:

太好了,你让我开心:)。我有最后一个问题:如果我想通过选择前两个月并返回一个 df 来执行 for 循环,然后选择接下来的两个月(删除第一个月)并返回另一个 df,直到数据结束……可行吗?关于如何实现它的任何建议?谢谢! 实际上,@LouiseLop 这是一个单独的问题,应该作为一个新问题提交。我建议您使用“for loop”请求创建新问题。 谢谢,我在这里把这个问题单独提出来了:***.com/questions/63173509/… @LouiseLop 对不起。我在那里度假了几天。我在上面的帖子中回答了你的问题。

以上是关于按索引分组的数据框的主要内容,如果未能解决你的问题,请参考以下文章

pandas DataFrame中按日期(在索引中)的加权平均分组(每列不同的操作)

将函数应用于 Dask 中的分组数据框:如何将分组的数据框指定为函数中的参数?

如何通过分组索引访问 pandas groupby 数据框?

将两个 Pandas 按对象分组

分组熊猫数据框后索引消失

按多列对数据框进行分组[重复]