如何计算大熊猫从中午到中午的每日平均值?

我对python和pandas相当陌生,因此对以后的误会深表歉意。

我有一个带有每小时值的pandas DataFrame,看起来像这样:

2014-04-01 09:00:00 52.9    41.1    36.3

2014-04-01 10:00:00 56.4    41.6    70.8

2014-04-01 11:00:00 53.3    41.2    49.6

2014-04-01 12:00:00 50.4    39.5    36.6

2014-04-01 13:00:00 51.1    39.2    33.3

2016-11-30 16:00:00 16.0    13.5    36.6

2016-11-30 17:00:00 19.6    17.4    44.3

现在我需要计算从2014-04-01 12:00到2014-04-02 11:00开始的每列24小时平均值 所以我想每天从中午到中午。

不幸的是,我不知道该怎么做。我已经阅读了一些有关使用groupby的建议,但是我真的不知道如何...

非常感谢您!任何帮助表示赞赏!

shinhwa3200 回答:如何计算大熊猫从中午到中午的每日平均值?

base参数。

一天是24小时,因此以12为基数的分组将从中午开始-中午。重新采样为您提供了介于两天之间的所有时间,因此如果您不需要完整的基础,可以.dropna(how='all')。 (我假设您有一个DatetimeIndex,如果没有,则可以使用resample的on参数指定日期时间列。)

df.resample('24H',base=12).mean()
#df.groupby(pd.Grouper(level=0,base=12,freq='24H')).mean() # Equivalent 

                         1      2          3
0                                           
2014-03-31 12:00:00  54.20  41.30  52.233333
2014-04-01 12:00:00  50.75  39.35  34.950000
2014-04-02 12:00:00    NaN    NaN        NaN
2014-04-03 12:00:00    NaN    NaN        NaN
2014-04-04 12:00:00    NaN    NaN        NaN
...                    ...    ...        ...
2016-11-26 12:00:00    NaN    NaN        NaN
2016-11-27 12:00:00    NaN    NaN        NaN
2016-11-28 12:00:00    NaN    NaN        NaN
2016-11-29 12:00:00    NaN    NaN        NaN
2016-11-30 12:00:00  17.80  15.45  40.450000
,

您可以减去时间和分组依据:

df.groupby((df.index - pd.to_timedelta('12:00:00')).normalize()).mean()
,

您可以将小时数更改12小时,然后按天重新采样。

from io import StringIO
import pandas as pd

data = """
2014-04-01 09:00:00,52.9,41.1,36.3
2014-04-01 10:00:00,56.4,41.6,70.8
2014-04-01 11:00:00,53.3,41.2,49.6
2014-04-01 12:00:00,50.4,39.5,36.6
2014-04-01 13:00:00,51.1,39.2,33.3
2016-11-30 16:00:00,16.0,13.5,36.6
2016-11-30 17:00:00,19.6,17.4,44.3
"""

df = pd.read_csv(StringIO(data),sep=',',header=None,index_col=0)

df.index = pd.to_datetime(df.index)
# shift by 12 hours
df.index = df.index - pd.Timedelta(hours=12)
# resample and drop na rows
df.resample('D').mean().dropna()
本文链接:https://www.f2er.com/3101210.html

大家都在问