【问题标题】:Resample one year down to one average day将一年重新采样到平均一天
【发布时间】:2021-10-23 14:53:17
【问题描述】:

我有一年的数据,按小时计算。数据如下所示:

2020-01-01 01:00:00  3
2020-01-01 02:00:00  4
2020-01-01 03:00:00  2
2020-01-01 04:00:00  3
2020-01-01 05:00:00  6
2020-01-01 06:00:00  8
2020-01-01 07:00:00  5
2020-01-01 08:00:00  9
...
2020-12-31 20:00:00  8
2020-12-31 21:00:00  4
2020-12-31 22:00:00  7
2020-12-31 23:00:00  2

根据这些数据,我想确定一年中的平均天数。结果

01:00:00 --> 1 点钟所有值的平均值
02:00:00 --> 2 点钟所有值的平均值
...

【问题讨论】:

  • 您能否提及第二列是您计算“一年中的平均天数”的列?如果您可以为两列提供标题并稍后框出问题,那就更好了

标签: pandas time-series


【解决方案1】:

新答案:

如果你想要每小时的平均值:

df['date'] = pd.to_datetime(df['date'])
df.groupby(df['date'].dt.hour)['value'].mean()

输出:

hour value
1     3
2     4
3     2
4     3
5     6
6     8
7     5
8     9
20    8
21    4
22    7
23    2

注意。输出与此处的输入相同,因为没有足够的数据来计算平均值

旧答案:

您的问题并不完全清楚,我想您想要每天的平均值。我进一步假设您有两个名为“日期”和“值”的列:

                   date  value
0   2020-01-01 01:00:00      3
1   2020-01-01 02:00:00      4
2   2020-01-01 03:00:00      2
3   2020-01-01 04:00:00      3
4   2020-01-01 05:00:00      6
5   2020-01-01 06:00:00      8
6   2020-01-01 07:00:00      5
7   2020-01-01 08:00:00      9
8   2020-12-31 20:00:00      8
9   2020-12-31 21:00:00      4
10  2020-12-31 22:00:00      7
11  2020-12-31 23:00:00      2

您可以转换为datetime 类型,使用dt.floor 对当天取底,groupby 取平均值:

df['date'] = pd.to_datetime(df['date'])
df.groupby(df['date'].dt.floor('d'))['value'].mean()

输出:

2020-01-01    5.00
2020-12-31    5.25

【讨论】:

  • 感谢您的快速回复,但我需要的是一年中每小时的平均天数。结果应该有一个每小时的值作为一年的平均值
  • @Elefant 你能检查更新的答案吗?
  • 您好,有什么方法可以做与上面相同的事情,但不是按小时分组,而是按一刻钟分组。当然,我有日期和四分之一小时时间步长的数据。
猜你喜欢
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多