首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中为pandas dataframe选择基于多列条件的值

在python中为pandas dataframe选择基于多列条件的值
EN

Stack Overflow用户
提问于 2020-06-07 16:11:48
回答 2查看 48关注 0票数 2

这是我的数据帧dim

代码语言:javascript
复制
          var         types     count
0         var1       nominal      1
1         var2       ordinal      1
2         var3  quantitative      2
3         var4  quantitative      2

我想要得到dim"var“,其中dim"types”== quantitative和dim"count“> 1。然后结果是一个列表var3,var4。当我尝试执行以下查询时:

代码语言:javascript
复制
print(dim["var"].where((dim["types"] =="quantitative") & (dim["count"] > 1)))

我得到了以下结果:

代码语言:javascript
复制
0    NaN
1    NaN
2    NaN
3    NaN

我不知道怎样才能得到想要的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-07 16:13:10

使用带有掩码的DataFrame.loc

代码语言:javascript
复制
L = dim.loc[(dim["types"] =="quantitative") & (dim["count"] > 1), "var"].tolist()
print (L)
['var3', 'var4']

您的输出是正确的,因为将where condition is False值转换为缺少的值:

代码语言:javascript
复制
print ((dim["types"] =="quantitative") & (dim["count"] > 2))
0    False
1    False
2    False
3    False
dtype: bool

print(dim["var"].where((dim["types"] =="quantitative") & (dim["count"] > 2)))
0    NaN
1    NaN
2    NaN
3    NaN
Name: var, dtype: object

因此,如果在条件输出中使用==是:

代码语言:javascript
复制
print ((dim["types"] =="quantitative") & (dim["count"] > 1))
0    False
1    False
2     True
3     True
dtype: bool

print(dim["var"].where((dim["types"] =="quantitative") & (dim["count"] > 1)))
0     NaN
1     NaN
2    var3
3    var4
Name: var, dtype: object 
票数 2
EN

Stack Overflow用户

发布于 2020-06-07 16:14:53

loc访问器与您的掩码一起使用。

代码语言:javascript
复制
>>> (dim["types"] == "quantitative") & (dim["count"] > 1)
0    False
1    False
2     True
3     True
dtype: bool

如下所示:

代码语言:javascript
复制
>>> dim.loc[(dim["types"] == "quantitative") & (dim["count"] > 1), 'var']
2    var3
3    var4
Name: var, dtype: object
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62242613

复制
相关文章

相似问题

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