假设我有一个数据帧:

Do Re Mi Fa So
1 0 Foo 100 50
1 1 Bar 75 20
0 0 True 59 59
1 1 False 0 12

如何查找"Do"和"Re"列中的值都等于1且"Fa"大于"So"的所有行?

我try 了几种方法,但它们首先返回一个错误,抱怨含糊不清:

我也试着把它分解成几个步骤,但我意识到最后一步将导致我提出正确和错误的陈述.我只想要真实.

    
    df['Do_1'] = df['Do'] == 1
    
    df['Re_1'] = df['Re'] == 1
    
    # This is where I realised I'm bringing in the False rows too
    df['both_1'] = (df['Do1'] == df['Re_1'])```

推荐答案

按位AND的链掩码再增加&:

df['both_1']= (df['Fa'] > df['So']) & (df['Do'] == 1) & (df['Re'] == 1)

print (df)
   Do  Re     Mi   Fa  So  both_1
0   1   0    Foo  100  50   False
1   1   1    Bar   75  20    True
2   0   0   True   59  59   False
3   1   1  False    0  12   False

或者,如果可能,列表中有多个列,请按子集df[['Do', 'Re']]筛选列,并按DataFrame.all测试所有列是否为真:

df['both_1']= (df['Fa'] > df['So']) & (df[['Do', 'Re']] == 1).all(axis=1)

如果需要过滤器,请使用boolean indexing:

df1 = df[(df['Fa'] > df['So']) & (df['Do'] == 1) & (df['Re'] == 1)]

对于第二种解决方案:

df1 = df[(df['Fa'] > df['So']) & (df[['Do', 'Re']] == 1).all(axis=1)]

Python相关问答推荐

为什么符号没有按顺序添加?

基于字符串匹配条件合并两个帧

无法使用requests或Selenium抓取一个href链接

OR—Tools CP SAT条件约束

实现自定义QWidgets作为QTimeEdit的弹出窗口

如何从数据库上传数据到html?

为什么NumPy的向量化计算在将向量存储为类属性时较慢?'

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

提取相关行的最快方法—pandas

计算分布的标准差

使用groupby方法移除公共子字符串

Python Pandas获取层次路径直到顶层管理

合并与拼接并举

干燥化与列姆化的比较

如何过滤组s最大和最小行使用`transform`'

Pandas数据框上的滚动平均值,其中平均值的中心基于另一数据框的时间

如何在Python中从html页面中提取html链接?

这是什么排序算法?(将迭代器与自身合并&&Q;)

将标量值作为输入并输出矩阵的函数的积分

有没有一种简单的方法来访问Polars struct 中的值?