【问题标题】:Count how many times a value appears per month in dataframe计算一个值每月在数据框中出现的次数
【发布时间】:2022-01-22 20:33:47
【问题描述】:

我有以下具有几年每小时数据的时间序列:

    local time         ghi mean
0       2013-01-01 00:00:00 0.0
1       2013-01-01 01:00:00 0.0
2       2013-01-01 02:00:00 -9999
3       2013-01-01 03:00:00 0.0
4       2013-01-01 04:00:00 0.0
..         ...          ...
8754    2016-12-31 18:00:00 427.5
8755    2016-12-31 19:00:00 194.9
8756    2016-12-31 20:00:00 -9999
8757    2016-12-31 21:00:00 237.6
8758    2016-12-31 22:00:00 -9999
8759    2016-12-31 23:00:00 0.0

我需要计算值 -9999 出现的次数并按年和月分组。所需的输出类似于:

    local time     ghi mean
0    2013-01   1
..         ...          ...
8    2016-12   2

我试过了:

df.groupby(df["local time"].dt.strftime('%Y-%m')).df['ghi mean'].value_counts()[-9999]

但是得到了:

AttributeError: 'Series' object has no attribute 'df'

【问题讨论】:

  • 我想你只是想要df.groupby(df["local time"].dt.strftime('%Y-%m'))['ghi mean'].value_counts()[-9999] 列选择只是 groupby 的方括号。

标签: python pandas dataframe datetime


【解决方案1】:

布尔选择,groupby sum 应该很容易为您提供所需的内容

如果df['ghi mean'] 是浮点数或整数

  (df['ghi mean']==-9999).groupby(df['local time'].dt.strftime('%Y-%m')).sum()

如果你创建了df['ghi mean']a 字符串,那么

(df['ghi mean']=='-9999.0').groupby(df['local time'].dt.strftime('%Y-%m')).sum()

【讨论】:

  • 工作,谢谢!!!!
  • 如果满意请点赞
  • 如何排除结果为 0 的月份,或者只显示结果不同于 0 的月份作为输出
  • df[df['ghi mean']!=0]df[df['ghi mean'].ne(0)] 过滤掉不等于零的那些
猜你喜欢
  • 2016-10-23
  • 2011-05-12
  • 2021-05-22
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 2021-08-21
相关资源
最近更新 更多