当前位置: 首页 > 知识库问答 >
问题:

python pandas多索引:在满足条件的索引级别内选择全部[重复]

景元徽
2023-03-14

这是我的数据库的简化版本。

                     A   B
Store Product Year        
A     1       2014  12  63
      2       2015  32   5
      3       2016  45   0
B     1       2014  45   0
      2       2015   6  19
      3       2016   7   4
C     1       2014  98   5
      2       2015  54  43
      3       2016  28   0
D     1       2014   4   6
      2       2015  32  67
      3       2016   1   5 

我正在尝试选择2016年B列中的值为零的所有商店。所以在这种情况下,我希望选择商店A和C。

df = df[df['B']==0]

仅选择 B = 0 的各个行。而我想要的是选择这个

                     A   B
Store Product Year        
A     1       2014  12  63
      2       2015  32   5
      3       2016  45   0
C     1       2014  98   5
      2       2015  54  43
      3       2016  28   0

提前感谢帮助或建议。

共有1个答案

谢涵亮
2023-03-14

您可以使用index.get_level_values创建掩码,然后使用布尔索引

mask = df[(df.index.get_level_values('Year') == 2016) & (df['B']==0)].index.get_level_values('Store')
df[df.index.get_level_values('Store').isin(mask)]

                     A   B
Store Product Year        
A     1       2014  12  63
      2       2015  32   5
      3       2016  45   0
C     1       2014  98   5
      2       2015  54  43
      3       2016  28   0
 类似资料:
  • 问题内容: 我正在尝试仅使用来自多索引DataFrame的一个索引来创建新的DataFrame。 理想情况下,我想要这样的事情: 和: 本质上,我想删除除level之外的多索引的所有其他索引。是否有捷径可寻? 问题答案: 一种方法是简单地重新绑定到所需的MultiIndex级别。您可以通过指定要保留的标签名称来做到这一点: 或使用级别的整数值: MultiIndex的所有其他级别将在此处消失。

  • 本文向大家介绍计算满足C ++中给定条件的索引对,包括了计算满足C ++中给定条件的索引对的使用技巧和注意事项,需要的朋友参考一下 我们给了前N个自然数的排列数组。这里的目标是找到满足以下条件的元素的索引对- 如果数组是Arr [],则i,j是索引,对元素对进行计数,使Arr [i] + Arr [j] = max(Arr [x])使得i <= x <= j。 即,Arr [i]和A [j]之和等

  • 问题内容: 我有以下DataFrame: 如您所见,列用作索引。我想获取该行的序数,在这种情况下应该是。 被测试的列可以是索引列(在这种情况下也可以)或常规列,例如,我可能想找到满足条件的行的索引。 问题答案: 您可以这样使用np.where: 返回的值是一个数组,因为一列中可能有多个具有特定索引或值的行。

  • 我正在尝试从多索引数据帧中仅使用一个索引来创建新的数据帧。 理想情况下,我想要这样的东西: 和: 基本上,我想删除除level之外的多索引的所有其他索引。有没有一个简单的方法可以做到这一点?

  • 我想知道是否可以从一个多索引级别中选择多个项目? 假设我有一个大熊猫数据帧,如下所示: 我想使用dataframe的lvl_2选择特定列 尝试类似< code>df.xs(['c ',' e'],level='lvl_2 ',axis=1)的内容会导致错误: 关键错误:“e”