编写一个循环代码来计算 77 次不同时间的平均值,使用另一列作为条件
Write a loop code to calculate average 77 different times, using another column as criteria
首先,这是我的第一个代码和问题,很抱歉这里的初学者水平和词汇量不足。
我想计算列“returns”中前 5 行的平均值并将其存储在数据框中,列“N”编号为 1,然后继续计算平均值 return 接下来的 5 行使用编号为 2 的相同列 N,依此类推(N 上升到 77)。请参阅下面的 table 作为示例。
实际数据超过 10.000 行,N 列从 1 到 77。
我确实准备了一个糟糕的代码(下面也是),但我有两个问题:
1 - 我无法将列 N 引用为循环。我必须输入 1 到 77(所以,77 次)才能得到样本 1 到 77
的所有平均值
2 - 我无法编写代码来存储输出,因为我也无法编写代码来从 N = 1 到 77
在下面的 table 中,存储在数据框中的所需结果(即:每个 N 的前 5 行的平均值)将是:0,1(对于 N = 1)和 0 ,15(对于 N = 2)
Sample table
N Return
1 0.23
1 0.08
1 0.02
1 0.16
1 0.01
1 0.01
1 -0.19
1 -0.14
1 -0.04
1 0.03
2 0.29
2 0.27
2 0.08
2 0.07
2 0.07
2 0.03
2 0.04
2 0.12
2 0.00
2 0.11
import pandas as pd
df = pd.read_csv(arq_csv)
ndf = df.loc[df["N"] == 1].head(5)
average = ndf["Return"].mean()
print(average)
试试这个代码:
import pandas as pd, random
# make dummy data
src = []
for i in range(77):
for k in range(10):
src.append([i + 1, random.randint(-10, 10)])
df = pd.DataFrame(src, columns=('N', 'Return'))
print(df)
# process data
df = df.groupby('N').head(5).groupby('N').mean().reset_index()
print(df)
输出
N Return
0 1 -1.4
1 2 -2.6
2 3 2.0
3 4 -0.6
4 5 -1.0
.. .. ...
72 73 -2.0
73 74 -0.2
74 75 -2.0
75 76 -7.0
76 77 1.8
[77 rows x 2 columns]
首先,这是我的第一个代码和问题,很抱歉这里的初学者水平和词汇量不足。
我想计算列“returns”中前 5 行的平均值并将其存储在数据框中,列“N”编号为 1,然后继续计算平均值 return 接下来的 5 行使用编号为 2 的相同列 N,依此类推(N 上升到 77)。请参阅下面的 table 作为示例。
实际数据超过 10.000 行,N 列从 1 到 77。
我确实准备了一个糟糕的代码(下面也是),但我有两个问题:
1 - 我无法将列 N 引用为循环。我必须输入 1 到 77(所以,77 次)才能得到样本 1 到 77
的所有平均值2 - 我无法编写代码来存储输出,因为我也无法编写代码来从 N = 1 到 77
在下面的 table 中,存储在数据框中的所需结果(即:每个 N 的前 5 行的平均值)将是:0,1(对于 N = 1)和 0 ,15(对于 N = 2)
Sample table
N Return 1 0.23 1 0.08 1 0.02 1 0.16 1 0.01 1 0.01 1 -0.19 1 -0.14 1 -0.04 1 0.03 2 0.29 2 0.27 2 0.08 2 0.07 2 0.07 2 0.03 2 0.04 2 0.12 2 0.00 2 0.11
import pandas as pd
df = pd.read_csv(arq_csv)
ndf = df.loc[df["N"] == 1].head(5)
average = ndf["Return"].mean()
print(average)
试试这个代码:
import pandas as pd, random
# make dummy data
src = []
for i in range(77):
for k in range(10):
src.append([i + 1, random.randint(-10, 10)])
df = pd.DataFrame(src, columns=('N', 'Return'))
print(df)
# process data
df = df.groupby('N').head(5).groupby('N').mean().reset_index()
print(df)
输出
N Return
0 1 -1.4
1 2 -2.6
2 3 2.0
3 4 -0.6
4 5 -1.0
.. .. ...
72 73 -2.0
73 74 -0.2
74 75 -2.0
75 76 -7.0
76 77 1.8
[77 rows x 2 columns]