数据框列表中列的中位数平均值

时间:2017-07-27 22:08:19

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

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

假设我有一个数据框列表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)

2 个答案:

答案 0 :(得分:2)

考虑样本数据

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

答案 1 :(得分:1)

这可以作为列表理解

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