为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哔哔one 2023-10-26 15:14:32
我有以下数据框,其中包含用户在 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   787      2011-05-10 18:38:55.030     0   0   0   0   0   0   1   0   0   0   0   0   0   0   0487     2011-11-29 14:46:12.080     0   0   1   0   0   0   0   0   0   0   0   0   0   0   021      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  10   0.661   02   0.333   0.664   0.665   0.336   17   0.33这个输出是正确的,唯一的问题是它是一个系列。预期输出应有 2 个单独的列,day如图mean所示。预期输出day mean-7  0-6  0.33-5  0.33-4  0.33-3  0.66-2  0-1  10   0.661   02   0.333   0.664   0.665   0.336   17   0.33
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

Series.rename_axis与 一起使用Series.reset_index,因此不需要设置新的列名称:


df1 = df.iloc[:,2:].mean().rename_axis('day').reset_index(name='mean')

print (df1)

   day      mean

0   -7  0.000000

1   -6  0.333333

2   -5  0.333333

3   -4  0.333333

4   -3  0.666667

5   -2  0.000000

6   -1  1.000000

7    0  0.666667

8    1  0.000000

9    2  0.333333

10   3  0.666667

11   4  0.666667

12   5  0.333333

13   6  1.000000

14   7  0.333333

编辑:使用seaborn 11:


sns.lineplot(data=df1, x = 'day', y = 'mean', err_style="bars",ci=68)


查看完整回答
反对 回复 2023-10-26
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信