【问题标题】:Pandas | How to calculate the average value of each cell in multiple dataframe with the same shape?熊猫 |如何计算具有相同形状的多个数据框中每个单元格的平均值?
【发布时间】:2020-10-22 05:30:12
【问题描述】:

我有几个这样的 DataFrame:

他们保存在一个列表中 df_list = [df1,df2,df3,df4,df5....]

我想生成一个新的DataFrame df_average。

在df_average中,每个网格等于df1、df2、df3、df4、df4对应网格的平均值。例如:

df_average[1,'Q1'] = 平均值(df1[1,'Q1'],df2[1,'Q1'],df3[1,'Q1'],df4[1,'Q1']) , df_average[1,'Q2'] = 平均值(df1[1,'Q2'],df2[1,'Q2'],df3[1,'Q2'],df4[1,'Q2'])

如何高效实现?

【问题讨论】:

  • Nilesh 如果我们解决了您的问题,我希望得到一些支持并标记为已接受的答案。谢谢!

标签: pandas


【解决方案1】:

下面的代码平均每个单元格的值。输出大小与其他数据帧相同:

# Import libraries
import pandas as pd

# Create DataFrame
df1 = pd.DataFrame({
    'Q1': [1,2,3],
    'Q2': [11,12,13],
    'Q3': [10,20,30],
    'Q4': [31,32,33],
    'Q5': [61,62,63],
})
df2 = df1.copy()*2
df3 = df1.copy()*0.5
df4 = df1.copy()*-1

# Get average
df_average = (df1+df2+df3+df4)/4
df_average

输出:

      Q1     Q2     Q3      Q4      Q5
0  0.625  6.875   6.25  19.375  38.125
1  1.250  7.500  12.50  20.000  38.750
2  1.875  8.125  18.75  20.625  39.375

【讨论】:

    【解决方案2】:

    您可以使用 pd.concat,然后在索引上使用 groupby,使用均值进行聚合。

    df1 = pd.DataFrame({'Q1':[1,2,3], 'Q2':[1,7,8], 'Q3':[8,9,1], 'Q4':[4,3,7]})
    df2 = pd.DataFrame({'Q1':[7,9,10], 'Q2':[9,2,8], 'Q3':[3,4,2], 'Q4':[1,5,6]})
    df_average = pd.concat([df1, df2])
    df_average = df_average.groupby(df_average.index).agg({'Q1': 'mean',
                                                           'Q2': 'mean',
                                                           'Q3': 'mean',
                                                           'Q4': 'mean'})
    
    print(df_average)
    
        Q1  Q2  Q3  Q4
    0   4.0 5.0 5.5 2.5
    1   5.5 4.5 6.5 4.0
    2   6.5 8.0 1.5 6.5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      相关资源
      最近更新 更多