Pandas 多索引渲染
Pandas Multi-Index rendering
我经常需要根据个人群体和多个变量生成描述性统计表。我几乎达到了预期的结果,如下所示(列 = 个体组,行 = 感兴趣变量的统计数据):
group_name ELF-TA TOTAL TOTAL not TA TOTAL-TA
stat
nb_c_3km 25% 2.00 1.00 1.00 2.00
50% 4.00 3.00 2.00 4.00
75% 6.00 5.00 4.00 6.00
count 250.00 1,816.00 1,442.00 374.00
max 17.00 21.00 21.00 16.00
mean 4.58 3.37 3.14 4.23
min 0.00 0.00 0.00 0.00
std 3.14 3.12 3.13 2.93
dist_c 25% 0.45 0.53 0.54 0.50
50% 0.89 1.01 1.04 0.94
75% 1.48 1.95 2.15 1.46
count 250.00 1,836.00 1,462.00 374.00
max 6.80 19.68 19.68 7.75
mean 1.17 1.78 1.92 1.21
min 0.00 0.00 0.00 0.00
std 1.13 2.25 2.43 1.16
我希望能够从中提取我想要的统计信息并按照我想要的顺序提取,例如简单地显示均值、标准差和中位数。我通过以下行接近这一点:
df_groups_desc.loc[(slice(None), ['mean', 'std', '50%']),:]
...但关闭只是因为我没有按所需顺序显示统计数据:
group_name ELF-TA TOTAL TOTAL not TA TOTAL-TA
stat
nb_c_3km 50% 4.00 3.00 2.00 4.00
mean 4.58 3.37 3.14 4.23
std 3.14 3.12 3.13 2.93
dist_c 50% 0.89 1.01 1.04 0.94
mean 1.17 1.78 1.92 1.21
std 1.13 2.25 2.43 1.16
关于合理解决方案的任何提示?
reindex
可以按顺序 select 行:
new_index, indexer = df.index.reindex(['mean', 'std', '50%'], level=1)
df = df.reindex(index=new_index)
print(df)
产量
ELF-TA TOTAL TOTAL not TA TOTAL-TA
dist_c mean 1.17 1.78 1.92 1.21
std 1.13 2.25 2.43 1.16
50% 0.89 1.01 1.04 0.94
nb_c_3km mean 4.58 3.37 3.14 4.23
std 3.14 3.12 3.13 2.93
50% 4.00 3.00 2.00 4.00
我经常需要根据个人群体和多个变量生成描述性统计表。我几乎达到了预期的结果,如下所示(列 = 个体组,行 = 感兴趣变量的统计数据):
group_name ELF-TA TOTAL TOTAL not TA TOTAL-TA
stat
nb_c_3km 25% 2.00 1.00 1.00 2.00
50% 4.00 3.00 2.00 4.00
75% 6.00 5.00 4.00 6.00
count 250.00 1,816.00 1,442.00 374.00
max 17.00 21.00 21.00 16.00
mean 4.58 3.37 3.14 4.23
min 0.00 0.00 0.00 0.00
std 3.14 3.12 3.13 2.93
dist_c 25% 0.45 0.53 0.54 0.50
50% 0.89 1.01 1.04 0.94
75% 1.48 1.95 2.15 1.46
count 250.00 1,836.00 1,462.00 374.00
max 6.80 19.68 19.68 7.75
mean 1.17 1.78 1.92 1.21
min 0.00 0.00 0.00 0.00
std 1.13 2.25 2.43 1.16
我希望能够从中提取我想要的统计信息并按照我想要的顺序提取,例如简单地显示均值、标准差和中位数。我通过以下行接近这一点:
df_groups_desc.loc[(slice(None), ['mean', 'std', '50%']),:]
...但关闭只是因为我没有按所需顺序显示统计数据:
group_name ELF-TA TOTAL TOTAL not TA TOTAL-TA
stat
nb_c_3km 50% 4.00 3.00 2.00 4.00
mean 4.58 3.37 3.14 4.23
std 3.14 3.12 3.13 2.93
dist_c 50% 0.89 1.01 1.04 0.94
mean 1.17 1.78 1.92 1.21
std 1.13 2.25 2.43 1.16
关于合理解决方案的任何提示?
reindex
可以按顺序 select 行:
new_index, indexer = df.index.reindex(['mean', 'std', '50%'], level=1)
df = df.reindex(index=new_index)
print(df)
产量
ELF-TA TOTAL TOTAL not TA TOTAL-TA
dist_c mean 1.17 1.78 1.92 1.21
std 1.13 2.25 2.43 1.16
50% 0.89 1.01 1.04 0.94
nb_c_3km mean 4.58 3.37 3.14 4.23
std 3.14 3.12 3.13 2.93
50% 4.00 3.00 2.00 4.00