如何按月分组并在熊猫数据框中取平均值

时间:2021-03-31 20:22:08

标签: dataframe pandas-groupby average

这是我的数据框

Date       Name  Speed
02-03-2021 Jack     40
02-03-2021 Mary     32
02-03-2021 Jack     41
02-04-2021 Mary     35

以及 2 月的更多日期和数据

然后在三月

03-01-2021 Jack 44
03-01-2021 Mary 38
03-02-2021 Jack 43
03-02-2021 Mary 34

以及三月的更多日期

我想按月分组,然后命名并得到相同的平均值

所以最终的数据框应该看起来像

Date   Name Speed
Feb    Jack    x (some avg calculated value)
Feb    Mary    y (some avg calculated value)
March  Jack    z (some avg calculated value)
March  Mary    w (some avg calculated value)

这是我的方法

首先使用 pd.to_datetime 转换日期列

df['Date']=pd.to_datetime(df['Date'],format="%Y-%m-%d")
df_month = df.groupby(pd.Grouper(freq='M'))
df_final = df_month.groupby('Name').mean()

2 个问题

  1. 是正确的方法吗?如果没有,请您建议我该怎么做
  2. 如果是,我会收到此错误
 df_month = df.groupby(pd.Grouper(freq='M'))

  File "/opt/bb/lib/python3.7/site-packages/pandas/core/generic.py", line 7632, in groupby
    observed=observed, **kwargs)
  File "/opt/bb/lib/python3.7/site-packages/pandas/core/groupby/groupby.py", line 2110, in groupby
    return klass(obj, by, **kwds)
  File "/opt/bb/lib/python3.7/site-packages/pandas/core/groupby/groupby.py", line 360, in __init__
    mutated=self.mutated)
  File "/opt/bb/lib/python3.7/site-packages/pandas/core/groupby/grouper.py", line 478, in _get_grouper
    binner, grouper, obj = key._get_grouper(obj, validate=False)
  File "/opt/bb/lib/python3.7/site-packages/pandas/core/resample.py", line 1384, in _get_grouper
    r = self._get_resampler(obj)
  File "/opt/bb/lib/python3.7/site-packages/pandas/core/resample.py", line 1380, in _get_resampler
    "but got an instance of %r" % type(ax).__name__)
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Int64Index'

0 个答案:

没有答案