【问题标题】: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()**

我什么也得不到。

有什么建议吗?

谢谢

【问题讨论】:

    标签: pandas dataframe datetime indexing group-by


    【解决方案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”请求创建新问题。
    • 谢谢,我在这里把这个问题单独提出来了:stackoverflow.com/questions/63173509/…
    • @LouiseLop 对不起。我在那里度假了几天。我在上面的帖子中回答了你的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    相关资源
    最近更新 更多