我正在尝试计算列的前150行的平均值,并使用平均值作为列的第一值,行151作为列的第二行,依此类推...在python中是否有任何软件包可以解决此问题。
注意:只需要取前150行的平均值,其他行与原始数据框相同。
这是我的数据和所需的输出:
print (df)
col2 desired_output
0 14.375 14.261111
1 14.350 14.175000
2 14.300 14.125000
3 14.350 14.150000
4 14.300 13.974000
5 14.225 14.074000
6 14.175 14.099000
7 14.150 13.949000
8 14.125 13.899000
9 14.175 13.849000
10 14.125 13.749000
11 14.150 13.774000
12 13.974 NaN
13 14.074 NaN
14 14.099 NaN
15 13.949 NaN
16 13.899 NaN
17 13.849 NaN
18 13.749 NaN
19 13.774 NaN
在此示例数据中,我取了col2的前9个值的平均值,并将其作为desirable_output的第一个值
答案 0 :(得分:1)
您可以使用Series.shift
并将列的第一个值设置为DataFrame.iloc
到mean
来计算第一个N
个值:
N = 9
df['new'] = df['col2'].shift(-N+1)
df.loc[0, 'new'] = df.iloc[:N, df.columns.get_loc('col2')].mean()
print (df)
col2 desired_output new
0 14.375 14.261111 14.261111
1 14.350 14.175000 14.175000
2 14.300 14.125000 14.125000
3 14.350 14.150000 14.150000
4 14.300 13.974000 13.974000
5 14.225 14.074000 14.074000
6 14.175 14.099000 14.099000
7 14.150 13.949000 13.949000
8 14.125 13.899000 13.899000
9 14.175 13.849000 13.849000
10 14.125 13.749000 13.749000
11 14.150 13.774000 13.774000
12 13.974 NaN NaN
13 14.074 NaN NaN
14 14.099 NaN NaN
15 13.949 NaN NaN
16 13.899 NaN NaN
17 13.849 NaN NaN
18 13.749 NaN NaN
19 13.774 NaN NaN