【发布时间】: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