使用 Pandas 如何根据日期找到某一列中特定元素的平均值?

3

我有一个数据帧 df

index  Heads
as     4
as     3
as     2
as     5
as     3
cd     4
cd     5
cd     6

使用以下代码,我可以获得如下输出:
avg = df['Heads'].groupby(df.index).mean()
df.reset_index().pivot_table(columns=["index"]).T

index  Heads
as     3.4   
cd     5

但我有另一个数据框 df2,其中包含一个额外的日期列,例如:

index  date         Heads
as     01-02-2000   4
as     04-03-2002   3
as     09-01-2003   2
as     23-12-2010   5
as     14-04-2006   3
cd     04-01-2004   4
cd     04-05-2007   5
cd     04-05-2001   6

在这里,我想计算 Heads 的平均值,但只考虑年份在2000到2005之间的元素。因此,期望的输出结果是:

index  Heads
as     3   
cd     5  
1个回答

1

使用 Series.betweenSeries.dt.year 进行 布尔索引,然后可以使用 mean 函数和 level 参数:

df['date'] = pd.to_datetime(df['date'], dayfirst=True)


df = (df[df['date'].dt.year.between(2000, 2005)]
         .mean(level=0)
         .reset_index())
print (df)
  index  Heads
0    as      3
1    cd      5

或者:

df = (df[df['date'].dt.year.between(2000, 2005)]
         .groupby(level=0).mean()
         .reset_index())
print (df)
  index  Heads
0    as      3
1    cd      5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接