DataFrame MultiIndex-按值查找列

我有一个包含两层索引和大约100列的multiindex数据框。我想基于某个值的存在来获取值的组(按列组织),但是我仍在为索引机制苦苦挣扎。

以下是一些示例数据:

import pandas as pd

index_arrays = [np.array(["one"]*5+["two"]*5), 
                np.array(["aaa","bbb","ccc","ddd","eee"]*2)]

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9],
                   [10,11,12],[13,14,15],[16,1,17],
                   [18,19,20],[21,22,23],[24,25,26],
                   [27,28,29]], index=index_arrays)

          0   1   2
one aaa   1   2   3
    bbb   4   5   6
    ccc   7   8   9
    ddd  10  11  12
    eee  13  14  15
two aaa  16   1  17
    bbb  18  19  20
    ccc  21  22  23
    ddd  24  25  26
    eee  27  28  29

现在,对于每个level_0索引(onetwo),我想返回整列,其中level_1索引aaa等于某个值,例如1。到目前为止,我得到的是:

df[df.loc[(slice(None), "aaa"),:]==1].any(axis=1)
>
one  aaa     True
     bbb    False
     ccc    False
     ddd    False
     eee    False
two  aaa     True
     bbb    False
     ccc    False
     ddd    False
     eee    False

而不是布尔值,我想检索实际值。预期的输出将是:

expected:
          0
one aaa   1
    bbb   4
    ccc   7
    ddd  10
    eee  13
two aaa   1
    bbb  19
    ccc  22
    ddd  25
    eee  28

多谢您的协助。

奖励问题:另外,很高兴知道哪一列包含所涉及的值。对于上面的示例,这将是column 0(对于index one)和column 1(对于index two)。有没有办法做到这一点?谢谢!

巴兰·卡拉库斯(Baran Karakus)

这可能是您要寻找的:

df.loc[df.index.get_level_values(0) == 'one', df.loc[('one', 'aaa')] == 1]

输出:

          0
one aaa   1
    bbb   4
    ccc   7
    ddd  10
    eee  13

要合并第一个索引的所有不同值的结果,请生成以下DataFrame并将其连接起来:

output_df = pd.DataFrame()
for level_0_val in df.index.get_level_values(0).unique():
    _ = df.loc[df.index.get_level_values(0) == level_0_val, df.loc[(level_0_val, 'aaa')] == 1]
    output_df = output_df.append(_)

这是output_df:

            0     1
one aaa   1.0   NaN
    bbb   4.0   NaN
    ccc   7.0   NaN
    ddd  10.0   NaN
    eee  13.0   NaN
two aaa   NaN   1.0
    bbb   NaN  19.0
    ccc   NaN  22.0
    ddd   NaN  25.0
    eee   NaN  28.0

然后,您可以由此生成所需的输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

concat MultiIndex pandas DataFrame列

来自分类Dev

Pandas Multiindex DataFrame - 按外部系列分组?

来自分类Dev

将DataFrame列标题设置为MultiIndex

来自分类Dev

在MultiIndex DataFrame Pandas中选择子列

来自分类Dev

按MultiIndex的一级对pandas DataFrame进行排序

来自分类Dev

按MultiIndex的一级对pandas DataFrame进行排序

来自分类Dev

如何切片具有MultiIndex索引和MultiIndex列的Pandas DataFrame?

来自分类Dev

具有MultiIndex的Pandas DataFrame:按年份的DateTime级别值分组

来自分类Dev

熊猫multiIndex DataFrame排序

来自分类Dev

Pandas multiIndex DataFrame sort

来自分类Dev

从MultiIndex DataFrame采样

来自分类Dev

更新 Pandas MultiIndex DataFrame

来自分类Dev

使用 MultiIndex 旋转 DataFrame

来自分类Dev

根据组汇总值在MultiIndex Dataframe上设置值

来自分类Dev

根据组汇总值在MultiIndex Dataframe上设置值

来自分类Dev

如何在MultiIndex Pandas DataFrame中设置索引值?

来自分类Dev

是否在此DataFrame中枢轴/重新索引列MultiIndex?

来自分类Dev

合并具有重叠的MultiIndex列的两个DataFrame

来自分类Dev

列堆叠为Series后的MultiIndex DataFrame排序顺序

来自分类Dev

熊猫在MultiIndex DataFrame中选择特定的较低级列

来自分类Dev

将列添加到Pandas MultiIndex DataFrame

来自分类Dev

合并具有重叠的MultiIndex列的两个DataFrame

来自分类Dev

Pandas 使用多行作为 DataFrame 中的 MultiIndex 列

来自分类Dev

根据“查找”创建MultiIndex列

来自分类Dev

将熊猫DataFrame与MultiIndex合并

来自分类Dev

在Pandas DataFrame中建立MultiIndex

来自分类Dev

创建具有MultiIndex的DataFrame

来自分类Dev

从Multiindex Dataframe删除特定的行

来自分类Dev

Pandas Dataframe Mul在Multiindex上

Related 相关文章

热门标签

归档