按特定行计算特定列的平均值
问题描述:
我有一个看起来像在图片中的数据帧。 按特定行计算特定列的平均值
现在,我想添加一个新列,它将显示每天的功率平均值(假设数据每5分钟进行一次采样),但是当它是day_or_night时(日期= 0,夜= 1)。这一步我已经得到了:
train['avg_by_day'][train['day_or_night']==1] = train['power'][train['day_or_night']==1].mean() train['avg_by_day'][train['day_or_night']==0] = train['power'][train['day_or_night']==0].mean()
但是这只是增加了对应于天,或类似的一切权力值的平均值 - 夜晚,这是不是我以后是:特定平均分别为每天/每晚。
我需要这样的东西:train ['avg_by_day'] == train.power.mean()when day == 1 and day_or_night == 1,and this for each day。
答
所以你要组由day
和day_or_night
数据框,并创建为每个组平均power
值的新列:
train['avg_by_day'] = train.groupby(['day','day_or_night'])['power']\
.transform('mean')
也许你还应该包括在分组列year
和month
,否则它是将每个月的第一天分组在一起,第二天一样,等等。
好想法!如果我简单地写道: 'train ['avg_by_day'] = train.groupby(['year','month','day','day_or_night'])['power' ] \ .transform('mean')' – saremisona
是的,只需将它们添加到'groupby' :)。 – gereleth
非常感谢! :) – saremisona