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

获取数据透视表中列部分的平均值

获取数据透视表中列部分的平均值

斯蒂芬大帝 2022-04-23 16:55:34
我有以下数据透视表。我通过这样做创建:table = pd.pivot_table(df,index=['day_of_week','date'],values=['dt_hours'],aggfunc=np.sum)问题是我不知道如何获得dt_hour所有日子的平均值。因此,我成功地采用了以下平均值:[0.564167, 2.835278, ... , 1.119444, 8.287778]我这样做是:table['dt_hours']['Friday'].mean()但我需要一个列表中所有天的平均值。所以: Friday average = 15.69706 Tuesday average = 7.56426 Wednesday average = 6.84077 etc.我想将其放入数据框或字典中,因为我想对此进行绘图。有任何想法吗?!
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

检查以下是否适合您。我假设了一个带有虚拟数据的简化数据框,该数据框在以下答案中采用您的格式。dow这里对应day_of_week和hours对应dt_hours于你的情况。日期由第一个字母表示。即 f -> 星期五。


我们首先重置索引以使用布尔索引。然后找到hours每一天的值并循环遍历结果系列以找到平均值。


import pandas as pd

import numpy as np




df = pd.DataFrame({"dow": ["f", "f", "t", "t", "w","w"], 

"date": ["3/7","2/3","6/7","5/6","1/2","4/2"],

"hours": ["21","34","56","78","32","88"]})


table = pd.pivot_table(df,index=['dow','date'],values=['hours'],aggfunc=np.sum)


t=table.reset_index()


avg_arr = []


print set(t.dow)

for day in set(t.dow):

    vals=t[(t.dow==day)]['hours']

    total = 0

    c=0

    for i,r in vals.iteritems():

        c+=1

        total+=float(r)

    avg = total/(c)

    avg_arr.append(avg)



print avg_arr 


查看完整回答
反对 回复 2022-04-23
  • 1 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号