【问题标题】:Pandas: Convert Groupby DateObject into PeriodObjectPandas:将 Groupby DateObject 转换为 PeriodObject
【发布时间】:2013-05-30 14:19:03
【问题描述】:

我有以下数据框:

df = pd.DataFrame({
'Buyer': 'Carl Mark Carl Joe Joe Carl'.split(),
'Trades': [1,3,5,8,9,3],
'Date' : [
    DT.datetime(2013,1,1,13,0),
    DT.datetime(2013,1,1,13,5),
    DT.datetime(2013,1,1,20,0),
    DT.datetime(2013,1,2,10,0),
    DT.datetime(2013,1,2,12,0),                                      
    DT.datetime(2013,1,2,14,0),
    ]})

现在我想按天分组并计算每个交易者的平均交易次数。为此,我使用了 groupby 函数:

gr = df.groupby([df.Date.map(lambda d: d.date()), 'Buyer']).mean()

是否有可能将生成的 'gr' DataFrame 转换为带有 PeriodIndex 的 DataFrame,以便我可以使用 resample 函数来计算每周和每月的平均值?

重要提示:我需要重新采样“gr”数据框而不是原始“df”

我将非常感谢任何帮助。

谢谢

安迪

【问题讨论】:

    标签: python group-by pandas period


    【解决方案1】:

    首先,将索引(带有日期对象)转换为 DatetimeIndex。 然后将 DatetimeIndex 转换为 PeriodIndex。

    In [103]: gr.reset_index(level=1)
    Out[103]: 
               Buyer  Trades
    Date                        
    2013-01-01  Carl     3.0 
    2013-01-01  Mark     3.0 
    2013-01-02  Carl     3.0 
    2013-01-02   Joe     8.5 
    
    In [104]: gr = gr.reset_index(level=1)
    
    In [105]: gr.index = gr.index.to_datetime().to_period('M')
    
    In [106]: gr
    Out[106]: 
            Buyer  Trades
    2013-01  Carl     3.0 
    2013-01  Mark     3.0 
    2013-01  Carl     3.0 
    2013-01   Joe     8.5
    

    【讨论】:

      猜你喜欢
      • 2017-01-12
      • 2021-12-26
      • 2012-05-09
      • 1970-01-01
      • 2022-12-01
      • 2021-11-14
      • 2021-09-29
      • 2016-06-07
      • 1970-01-01
      相关资源
      最近更新 更多