我有一个随机数据框:
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
我正在尝试运行10次。为了创建一个数据帧,该数据帧是10个随机数据帧的总和,然后再将其除以10以求平均值。
答案 0 :(得分:1)
一种解决方案是创建DataFrame列表,通过concat
联接在一起,并在第一级创建mean
:
np.random.seed(2019)
dfs = [pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
for x in range(10)]
df = pd.concat(dfs, keys=range(10)).mean(level=0)
print (df)
A B C D
0 50.96 50.05 53.74 54.56
1 55.38 46.49 53.57 46.51
2 50.53 48.29 45.57 47.64
3 49.69 51.70 55.11 48.40
4 52.57 50.28 53.17 47.20
5 50.49 48.60 48.29 50.49
6 45.26 54.60 47.78 46.62
7 50.92 48.27 56.30 47.28
8 47.57 46.51 52.90 46.07
9 45.54 49.72 49.38 45.71
或者使用多10倍的行创建DataFrame
,创建MultiIndex
,然后再次获得mean
:
np.random.seed(2019)
df = pd.DataFrame(np.random.randint(0,100,size=(100 * 10, 4)),
columns=list('ABCD'),
index=pd.MultiIndex.from_product([range(10), range(100)]))
df = df.mean(level=0)
print (df)
A B C D
0 50.96 50.05 53.74 54.56
1 55.38 46.49 53.57 46.51
2 50.53 48.29 45.57 47.64
3 49.69 51.70 55.11 48.40
4 52.57 50.28 53.17 47.20
5 50.49 48.60 48.29 50.49
6 45.26 54.60 47.78 46.62
7 50.92 48.27 56.30 47.28
8 47.57 46.51 52.90 46.07
9 45.54 49.72 49.38 45.71
答案 1 :(得分:0)
这是一个接受n-您要运行此操作的次数的函数。
def func(n):
df_total = 0
for i in range(n):
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
# to add similar dataframes just use + operator
df_total = df_total + df
return df_total / n