如何从第151行开始取平均列的前10150行并将平均值用作列的第一值和列的第二值

时间:2019-03-21 06:49:49

标签: python-3.x pandas

我正在尝试计算列的前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的第一个值

1 个答案:

答案 0 :(得分:1)

您可以使用Series.shift并将列的第一个值设置为DataFrame.ilocmean来计算第一个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