python - 求不同年份同一日期的平均值

标签 python pandas

我正在处理以下数据帧:

df
Out[1]: 
              temp_C
date          
2013-01-01    12
2013-01-02    11
2013-01-03    10
2013-01-04     9
2013-01-05    10
2013-01-06    10
2013-01-07    11
2013-01-08    12
2013-01-09    14
2013-01-10    14
2013-01-11    12
2013-01-12    12
2013-01-13    11
2013-01-14    10
2013-01-15    10
2013-01-16    12
2013-01-17    13
...   
2017-01-02     8
2017-01-03     8
2017-01-04     8
2017-01-05     9
2017-01-06     9
2017-01-07    10
2017-01-08    12
2017-01-09    14
2017-01-10    14
2017-01-11    10
2017-01-12    10
2017-01-13    11
2017-01-14    14
2017-01-15    13
2017-01-16    10
2017-01-17     9
[1770 rows x 1 columns]

我需要做的是将这些值按一年中的某一天进行分组,找到每组的平均值(或中位数),从而获得一个新的DataFrame,其中每天的值是平均值/同一天所有值的中位数/...。

这是一个例子:

df_grouped
Out[2]: 
              temp_C
date
2013-01-01    12
2014-01-01    10
2015-01-01    10
2016-01-01    12
2017-01-01    11
2013-01-02    11
2014-01-02    10
....
2016-12-31    8
2017-12-31    7

df_mean
Out[3]: 
              temp_C
date
1970-01-01    11 #the year is not meaningful anymore
1970-01-02    11.4
1970-01-03    12.5
....
1970-12-30    7.5
1970-12-31    7.5

谢谢。

最佳答案

设置

df = pd.DataFrame(
    {'temp_C': range(10)},
    pd.to_datetime([
        '2010-01-23', '2012-03-30',
        '2013-01-23', '2013-03-30',
        '2014-01-23', '2014-03-30',
        '2016-01-23', '2015-03-30',
        '2017-01-23', '2017-03-30',
    ])
)
<小时/>

分组依据

df.groupby('{:%m-%d}'.format).mean()

       temp_C
01-23       4
03-30       5
<小时/>

说明

字符串有一个 format 方法,您可以将其用作可调用函数。它接受经过处理并插入为新字符串的参数。

'{:%m-%d}'.format 是一个可调用函数,它采用单个位置参数并由 {} 中的内容进行处理字符串。在这种情况下 '{:%m-%d}' 特定于处理日期,并且可以更好地理解格式 here 。它说在查看日期时,将其格式设置为月日。

当将可调用对象传递给groupby时,它会将可调用对象应用于索引的每个元素。由于我们的索引是Datetime,因此每个元素都会以月份和日期的形式返回。这正是我们想要的意思

关于python - 求不同年份同一日期的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52520846/

相关文章:

python - 每次加载项目时,PyCharm 都会询问 python 解释器

python - 如何在Python中使用pandas访问导入的csv文件中的元素?

python - 如何更改 iterrows() 的起始索引?

python - 折叠数据框枢轴到单行

python - 在 Python 中计算蛋白质接触顺序

python - 大于数字的唯一总和

python - Django模板ifequal小数比较

Python:Pandas,如何在groupby之后选择不同日期范围内的行

python - Pandas DataFrame 中的 .gt 运算符

python - 如何重命名所有文件夹?