在多索引数据帧中按特定索引级别筛选行

2024-07-01 06:39:39 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个multIndex数据帧:

mux = pd.MultiIndex.from_arrays([
    list('aaaabbbbbccdddddd'),
    list('tuvwlmnopxyfghijk')
], names=['one', 'two'])

df = pd.DataFrame({'col': np.arange(len(mux))}, mux)

df

         col
one two     
a   t      0
    u      1
    v      2
    w      3
b   l      4
    m      5
    n      6
    o      7
    p      8
c   x      9
    y     10
d   f     11
    g     12
    h     13
    i     14
    j     15
    k     16

是否可以将对应的行保留到数据帧第0级的第i个值?在

对于i=2,我的预期输出为:

^{pr2}$

请注意,只保留与a和b相关的行,其他所有内容都将被删除。我希望问题是清楚的,但如果不是,请随时要求澄清。在

我试过了:

idx = pd.IndexSlice
df.iloc[(idx[:2], slice(None))]

但这只给出了整个df的前两行,而不是第0层前两个值的所有行。在


Tags: 数据fromdfcolonelistpdmux
1条回答
网友
1楼 · 发布于 2024-07-01 06:39:39

一种方法是返回第0级的索引值,然后用这些值索引到原始数据帧中:

^{1}$

正如评论中提到的,这只适用于第0层,而不是第1层。可能还有一个更具普遍性的解决方案可以与其他级别一起使用。在

相关问题 更多 >

    热门问题