按特定行

时间:2017-04-09 11:32:22

标签: pandas dataframe

我有一个类似于图片的数据框。enter image description here

现在,我想添加一个新列,它将显示每天的平均功率(假设数据每5分钟采样一次),但是当它是day_or_night(day = 0 in the column,night = 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()

但这只是增加了与日相对应的所有功率值的平均值,或类似地 - 夜晚,这不是我之后的情况:每天/每晚的特定平均值。

我需要这样的东西:火车[' avg_by_day'] == train.power.mean()当天== 1和day_or_night == 1,这是每天。

1 个答案:

答案 0 :(得分:2)

因此,您希望按dayday_or_night对数据框进行分组,并为每个组创建一个平均值为power的新列:

train['avg_by_day'] = train.groupby(['day','day_or_night'])['power']\
                           .transform('mean')

也许您还应该在分组列中添加yearmonth,否则它会将每个月的第一天分组,第二天分组,依此类推。