使用pandas数据框按月分组以计算平均每月价值

时间:2019-03-24 10:56:00

标签: python pandas sorting datetime group-by

我正在尝试计算我的熊猫数据框中的平均每月误差值:

df

输出:

    timestamp    error
0   2016-01-01  1.402315
1   2016-01-02  2.100072
2   2016-01-03  2.127035
3   2016-01-04  1.371335
..         ...       ...
362 2016-12-28  2.189454
363 2016-12-29  1.411169

我想计算每月错误值,所以我尝试:

df=df.groupby(df['timestamp'].dt.strftime('%B'))['error'].mean().sort_values()

这给了我输出:

timestamp
March        1.505680
July         1.728256
June         1.760756
August       1.796719
September    1.830922
October      1.922697
February     2.021558
May          2.100005
December     2.143730
April        2.316473
November     2.491638
January      2.551331

我似乎无法对它们进行排序,因此它们的顺序为jan,feb,mar,pril等,因此在绘图中,月份在xaxis上的顺序正确。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

 a (  b ( ...args))
 f2( f3( f4( 2 ) ) )
# Print small dataframe which was provided
print(df)
      timestamp     error
0    2016-01-01  1.402315
1    2016-01-02  2.100072
2    2016-01-03  2.127035
3    2016-01-04  1.371335
362  2016-12-28  2.189454
363  2016-12-29  1.411169

答案 1 :(得分:0)

Pandas为此具有内置功能,因此更简单(另请参见How can I Group By Month from a Date field using Python/Pandas

你可以做

df.groupby(df['timestamp'].dt.month).mean()

它将按月进行均值,并将索引作为月数,因此它们将按1月-> 12月的顺序排序。