如何在Python中通过平均值聚合Dataframe的值?

我有以下数据框,其中包含用户在 2 周内(从 -7 到 7 天)发布的帖子数量。我想创建另一个数据框,该数据框应该具有每天发布的平均帖子数。我编写了以下代码,但它返回了一个包含 1 列的系列而不是 Dataframe。所需的 Dataframe 应有 2 个单独的列,分别为day和mean。


数据框的一部分 (df)


UserId          Date                -7  -6  -5  -4  -3  -2  -1  0   1   2   3   4   5   6   7

87      2011-05-10 18:38:55.030     0   0   0   0   0   0   1   0   0   0   0   0   0   0   0

487     2011-11-29 14:46:12.080     0   0   1   0   0   0   0   0   0   0   0   0   0   0   0

21      2012-03-02 14:35:06.867     0   1   0   1   2   0   2   2   0   1   2   2   1   3   1

代码(获取每日平均帖子数)


df.iloc[:,2:].mean()

代码输出


-7  0

-6  0.33

-5  0.33

-4  0.33

-3  0.66

-2  0

-1  1

0   0.66

1   0

2   0.33

3   0.66

4   0.66

5   0.33

6   1

7   0.33

这个输出是正确的,唯一的问题是它是一个系列。预期输出应有 2 个单独的列,day如图mean所示。


预期输出


day mean

-7  0

-6  0.33

-5  0.33

-4  0.33

-3  0.66

-2  0

-1  1

0   0.66

1   0

2   0.33

3   0.66

4   0.66

5   0.33

6   1

7   0.33


哔哔one
浏览 99回答 1
1回答

拉莫斯之舞

Series.rename_axis与 一起使用Series.reset_index,因此不需要设置新的列名称:df1 = df.iloc[:,2:].mean().rename_axis('day').reset_index(name='mean')print (df1)   day      mean0   -7  0.0000001   -6  0.3333332   -5  0.3333333   -4  0.3333334   -3  0.6666675   -2  0.0000006   -1  1.0000007    0  0.6666678    1  0.0000009    2  0.33333310   3  0.66666711   4  0.66666712   5  0.33333313   6  1.00000014   7  0.333333编辑:使用seaborn 11:sns.lineplot(data=df1, x = 'day', y = 'mean', err_style="bars",ci=68)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python