【问题标题】:Average of median of a column in a list of dataframes数据框列表中列的平均值
【发布时间】:2018-01-03 20:00:39
【问题描述】:

我正在寻找获取数据框列表中列的平均值的最佳方法(相同的列名)。

假设我有一个数据框列表list_df。我可以编写以下for 循环来获得所需的输出。我更感兴趣的是看看我们是否可以消除for 循环

med_arr = []
list_df = [df1, df2, df3]
for df in list_df:
    med_arr.append(np.median(df['col_name']))
np.mean(med_arr)

【问题讨论】:

    标签: python-2.7 python-3.x pandas numpy dataframe


    【解决方案1】:

    考虑样本数据

    np.random.seed([3,1415])
    df1 = pd.DataFrame(dict(col_name=np.random.randint(10, size=10)))
    df2 = pd.DataFrame(dict(col_name=np.random.randint(10, size=10)))
    df3 = pd.DataFrame(dict(col_name=np.random.randint(10, size=10)))
    
    list_df = [df1, df2, df3]
    

    选项 1
    pandas

    pd.concat([d['col_name'] for d in list_df], axis=1).median().mean()
    
    3.8333333333333335
    

    选项 2
    numpy

    np.median([d['col_name'].values for d in list_df], 1).mean()
    
    3.8333333333333335
    

    【讨论】:

      【解决方案2】:

      这可以作为一个列表理解来完成:

      list_df = [ df1, df2, df3 ]
      med_arr = [ np.median( df['col_name'] ) for df in list_df ]
      np.mean(med_arr)
      

      【讨论】:

        猜你喜欢
        • 2013-12-15
        • 2019-01-20
        • 1970-01-01
        • 2019-12-14
        • 2014-06-03
        • 1970-01-01
        • 2020-11-05
        • 1970-01-01
        相关资源
        最近更新 更多