在 pandas multiindex 中设置共享列为索引列

问题描述 投票:0回答:0

我有以下 pandas multiindex:

import pandas as pd
from collections import defaultdict

pd_df = defaultdict(list)
categories = ['cat 1', 'cat 2']
sig_bkgd = ['signal', 'bkgd']
masses = [i for i in range(10, 20)]

for m in masses:
    for cat in categories:
        for sb in sig_bkgd:
            pd_df[(cat, sb)].append(np.random.randint(100))

pd.DataFrame(pd_df)

no_index_col

我想将质量数组设置为索引列。

我尝试了什么:

for m in masses:
    for cat in categories:
        for sb in sig_bkgd:
            pd_df[(cat, sb)].append(np.random.randint(100))

pd.DataFrame(pd_df).set_index("Mass")

...生成的数据框丢失了多索引列:

index_col_no_multiindex

我可以添加两个质量列,但它们是相同的,所以它是多余的,我必须将它们都设置为索引:

for m in masses:
    for cat in categories:
        pd_df[(cat, 'mass')].append(m)
        for sb in sig_bkgd:
            pd_df[(cat, sb)].append(np.random.randint(100))

pd.DataFrame(pd_df).set_index([('cat 1', 'mass'), ('cat 2', 'mass')])

2_index_cols

我想要的是一个看起来像第一张图片的数据框,但只是作为索引列的质量数组。任何帮助将不胜感激!

python pandas
© www.soinside.com 2019 - 2024. All rights reserved.