2017-07-27 105 views
0

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

比方说,我有一个数据框的列表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) 

回答

1

这可以做一个列表理解

list_df = [ df1, df2, df3 ] 
med_arr = [ np.median(df['col_name']) for df in list_df ] 
np.mean(med_arr) 
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