我正在寻找获取数据框列表(相同列名)中列的中位数平均值的最佳方法。
假设我有一个数据框列表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)
答案 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)