2017-07-27 110 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