随机数据帧-总和和平均值

时间:2019-01-11 14:25:59

标签: python pandas

我有一个随机数据框:

df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))

我正在尝试运行10次。为了创建一个数据帧,该数据帧是10个随机数据帧的总和,然后再将其除以10以求平均值。

2 个答案:

答案 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