首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫多指标:按条件选择

熊猫多指标:按条件选择
EN

Stack Overflow用户
提问于 2022-04-11 11:03:42
回答 3查看 493关注 0票数 1

我无法按条件访问多索引/列DataFrame的值。

代码语言:javascript
复制
df = pd.DataFrame(np.arange(16).reshape(4,4),
                  index=[['a', 'a', 'b', 'b'], ["c", "d", "c", "d"]],
                  columns=[['cat1', 'cat1', 'cat2', 'cat2'], ['vals1', 'vals2', 'vals1', 'vals2']])
代码语言:javascript
复制
     cat1        cat2      
    vals1 vals2 vals1 vals2
a c     0     1     2     3
  d     4     5     6     7
b c     8     9    10    11
  d    12    13    14    15

我知道如何通过它们的位置来访问值。

代码语言:javascript
复制
df.loc[("a", "c"), ("cat1", "vals1")]
df.loc[(slice(None), "d"), ("cat1", slice(None))]

但是如何使用这里的条件

例如,在列("cat1","vals2")中选择值("cat2","vals2")==7

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-04-11 11:05:21

DataFrame.loc中使用元组

代码语言:javascript
复制
a = df.loc[df[("cat2", "vals2")] == 7, ('cat1', 'vals1')]
print (a)

最后,如果需要来自一个元素Series的标量

代码语言:javascript
复制
out = a.iat[0]

如果可能的话,没有匹配:

代码语言:javascript
复制
out = next(iter(a), 'no match')

您可以比较切片行、列(输出由布尔值填充的DataFrame ),因此对于布尔Series,需要测试DataFrame.any是否为每行的真或DataFrame.all为每行的所有真实值。

代码语言:javascript
复制
m = df.loc[:, ("cat2", slice(None))]==7

a = df.loc[m.any(axis=1), ("cat1", "vals2")]
print (a)
a  d    5
Name: (cat1, vals2), dtype: int32
代码语言:javascript
复制
m = df.loc[:, ("cat2", slice(None))]==7
df2 = df.loc[m.any(axis=1), ("cat1", slice(None))]
print (df2)
     cat1      
    vals1 vals2
a d     4     5
票数 3
EN

Stack Overflow用户

发布于 2022-04-11 11:05:29

您可以将loc布尔索引结合使用

代码语言:javascript
复制
df.loc[df[('cat2', 'vals2')].eq(7), ('cat1', 'vals2')]

产出:

代码语言:javascript
复制
a  d    5
Name: (cat1, vals2), dtype: int64
票数 3
EN

Stack Overflow用户

发布于 2022-04-11 11:34:11

与@mozway非常相似的一种方法是使用pd.IndexSlice,正如熊猫博士在“使用片”部分中所建议的那样。

代码语言:javascript
复制
idx = pandas.IndexSlice

mask = df[('cat2', 'vals2')]==7

df.loc[idx[mask], idx['cat1', "vals2"]]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71826690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档