看啥推荐读物
专栏名称: 生信媛
生信媛,从1人分享,到8人同行。坚持分享生信入门方法与课程,持续记录生信相关的分析pipeline, python和R在生物信息学中的利用。内容涵盖服务器使用、基因组转录组分析以及群体遗传。
今天看啥  ›  专栏  ›  生信媛

为什么Python中df.loc[df.a > 2 & df.b > 3, :]做行筛选时会报错

生信媛  · 公众号  · 生物  · 2021-04-15 23:18
我们分别在R和python中构建一个数据框,用1到9进行填充,有3列,对应a,b,cR代码如下mat = matrix(1:9, nrow = 3, ncol = 3,byrow = TRUE)df = as.data.frame(mat)colnames(df) "a","b","c")Python代码如下import numpy as npimport pandas as pdmat = np.array(range(1,10))mat = mat.reshape(3,3)df = pd.DataFrame(mat, columns=['a','b','c'])在R语言中,我们可以直接用df$a > 2 & df$c > 3获取一组逻辑值,然后用逻辑值进行过滤df[df$a > 2 & df$c > 3,]但是在Python中,类似的代码却会报错df.loc[df.a > 2 & df.b > 3, :]# 报错信息# ValueError: The truth value of a Series is ambiguous. # Use a.empty, a.bool(), a.item(), a.any() or a.all().看起来完全一样的代码,逻辑也似乎没啥问题,为什么会有不同的结果呢?这其实是R和Python在运算符的优先级 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照