【问题标题】:Summing over months with pandas用熊猫总结几个月
【发布时间】:2013-07-01 06:43:24
【问题描述】:

我知道有一个简单的实现可以做到这一点,但我不记得语法了。有一个简单的 pandas 时间序列,我想按月汇总数据。具体来说,我想添加数月和数年的数据以获得一些摘要。可以用切片来写,但我记得看到过自动执行它的语法。

import pandas as pd
df = Series(randn(100), index=pd.date_range('2012-01-01', periods=100))

一等奖是一等奖。

部分答案:

ds.resample('M', how=sum)  # for calendar monthly
ds.resample('A', how=sum)  # for calendar yearly

知道如何优雅地按年总和进行多索引吗?

【问题讨论】:

  • 我认为找到了答案。添加到问题

标签: python pandas time-series


【解决方案1】:
In [1]: import pandas as pd
        from numpy.random import randn

In [2]: df = Series(randn(500), index=pd.date_range('2012-01-01', periods=500))

In [3]: s2 = df.groupby([lambda x: x.year, lambda x: x.month]).sum()

In [4]: s2
Out[4]: 
2012  1      3.853775
      2      4.259941
      3      4.629546
      4    -10.812505
      5    -16.383818
      6     -5.255475
      7      5.901344
      8     13.375258
      9      1.758670
      10     6.570200
      11     6.299812
      12     7.237049
2013  1     -1.331835
      2      3.399223
      3      2.011031
      4      7.905396
      5      1.127362
dtype: float64

【讨论】:

  • 您是否有理由使用 lamdba 而不是使用 df.index.year 和 df.index.month (我更喜欢)?在性能上似乎几乎相同。
  • 它们是等价的,我只是使用lambda 来表示更动态的计算,例如你几乎可以做任何事情)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多