【问题标题】:DataFrame groupby hour and do the mean for a specific columnDataFrame 按小时分组并为特定列取平均值
【发布时间】:2021-02-15 17:20:15
【问题描述】:

考虑以下DataFrame

    Year    Month   Day Hour    1   2   4   5   6   7   Solar
0   2019    01  01  00  3856    6074    2123    3634    2219    2449    29
1   2019    01  01  00  3856    6072    2038    3443    2376    2644    29
2   2019    01  01  00  3862    6074    1916    3341    2734    2522    29
3   2019    01  01  00  3815    6074    1882    3135    2880    2556    29
4   2019    01  01  00  3751    6073    1855    3055    2940    2651    30
5   2019    01  01  00  3763    6071    1844    2978    2907    2628    29
6   2019    01  01  01  3808    6072    1842    2898    2868    2557    29
7   2019    01  01  01  3799    6074    1743    3559    2838    1844    29
8   2019    01  01  01  3810    6073    1688    3305    2766    1958    29
9   2019    01  01  01  3798    6075    1696    3142    2645    2048    30
10  2019    01  01  01  3740    6072    1678    3096    2598    2056    29

为了获得每小时(第 3 列)“太阳能”(第 11 列)的平均值,我尝试过

1.

df['Solar_Mean'] = df.groupby(['Hour'])['Solar'].mean()

“Solar_Mean”只会得到nan

    Solar_Mean
0   nan
1   nan
2   nan
3   nan
4   nan
5   nan
df['Solar_Mean'] = df.groupby(['Hour'])['Solar'].transform('mean')

这给了

    Solar_Mean
0   272.4290164663996
1   272.4290164663996
2   272.4290164663996
3   272.4290164663996
4   272.4290164663996
5   272.4290164663996
df['Solar_Mean'] = df.groupby(['Hour'])['Solar'].transform(np.mean)

这给了我与第二种方法相同的效果。

    Solar_Mean
0   272.4290164663996
1   272.4290164663996
2   272.4290164663996
3   272.4290164663996
4   272.4290164663996
5   272.4290164663996

由于每小时有 6 个文件,如果将前 6 个文件的总和除以 6,则得到 29.1666666667,这应该是正确的值。我在这里错过了什么?

【问题讨论】:

    标签: python pandas dataframe pandas-groupby mean


    【解决方案1】:

    在使用groupby 时,我没有考虑使用YearMonthDay。应该是这样的

    df['Solar_Mean'] = df.groupby(['Year', 'Month', 'Day', 'Hour'])['Solar'].transform('mean')
    

    这给了

        Solar_Mean
    0   29.166666666666668
    1   29.166666666666668
    2   29.166666666666668
    3   29.166666666666668
    4   29.166666666666668
    5   29.166666666666668
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 2021-07-07
      • 2020-08-27
      • 2023-02-21
      • 1970-01-01
      • 2022-12-22
      相关资源
      最近更新 更多