【问题标题】:pandas group by six months熊猫组六个月
【发布时间】:2019-12-29 21:50:13
【问题描述】:

你好吗?

我有一个两列数据集:

damesano    premio_dir
200810      0.00
200811      52639.97
200904      108775.58
200802      0.00
200707      0.00

我想按“damesano”列进行分组,以便按年分组,然后按学期分组,并对 premio_dir 列的值求和。

有人可以帮帮我吗?

【问题讨论】:

  • 请定义“学期” 什么是学期?
  • 我将学期定义为 1 月至 6 月和 7 月至 12 月 :)

标签: python pandas dataframe date pandas-groupby


【解决方案1】:

假设您已将学期定义为 1 月至 6 月和 7 月至 12 月,您可以做的一件事是

 df.groupby([df.damesano // 100, df.damesano % 100 > 6]).premio_dir.sum()

使用您的示例数据,这给出了以下内容,其中False 对应于弹簧,True 对应于下降:

In [52]: df.groupby([df.damesano // 100, df.damesano % 100 > 6]).premio_dir.sum()
Out[52]:
damesano  damesano
2007      True             0.00
2008      False            0.00
          True         52639.97
2009      False       108775.58
Name: premio_dir, dtype: float64

或者,稍微重命名以使结果看起来更好:

In [107]: df.groupby([df.damesano // 100, df.damesano % 100 > 6]).premio_dir.sum().rename_axis(['Year', 'Semester']).rename(('Spring', 'Fall').__getitem__, level=1)
Out[107]:
Year  Semester
2007  Fall             0.00
2008  Spring           0.00
      Fall         52639.97
2009  Spring      108775.58
Name: premio_dir, dtype: float64

【讨论】:

  • 我认为我提出问题的方式有误。在这种情况下,我想按年和学期分组,而不仅仅是按学期。对不起:(
猜你喜欢
  • 2018-11-24
  • 1970-01-01
  • 2013-07-01
  • 2014-12-15
  • 1970-01-01
  • 2016-06-24
  • 2023-02-16
  • 2019-10-10
  • 2020-03-30
相关资源
最近更新 更多