下面给出了一个数据帧示例。在
hour minute value
0 0 10
0 5 20
0 10 30
0 15 50
0 20 10
0 25 55
1 0 55
1 5 50
1 10 10
1 15 20
1 20 30
1 25 40
1 30 50
。。。。每天每小时都这样。我想把每小时每分钟的平均值和标准偏差,以及每小时和每分钟的实际值作为两个新列。最后的数据帧如下所示。在
所以0小时和0分钟的平均值是平均值(10,55)和标准偏差(10,55) 0小时和0分钟的新列的值为平均值(10,55)*10&stdev(10,55)*10 新列1小时0分钟的值为 平均值(10,55)*55和标准偏差(10,55)*55 同样的方式,它需要迭代所有的小时和分钟和聚合
^{pr2}$目前,我正在对行进行迭代,先按小时,然后按分钟,并对每行进行增值计算。在
for hour in df.hour:
for minute in df.minute:
trim_df = df.loc[(df[hour] == hour) & (df[minute] == minute)]
mean = trim_df [value].mean()
stdev = trim_df [value].std()
for index,row in trim_df.iterrows():
df.at[index, "mean*value"] = row["value"]*mean
df.at[index, "stdev*value"] = row["value"]*stdev
我的方法花费了大量的时间,我试图使用pandas按功能分组,但无法转换这种逻辑。在
您可以使用
df.groupby(...).transform('mean')
返回一个包含每组平均值的序列:对
.transform('std')
执行相同的操作以获得标准偏差系列。在相关问题 更多 >
编程相关推荐