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

只保持Pandas DataFrame中的那些行等于某个值(成对多列)[重复]

魏凯捷
2023-03-14

答案的一部分可以在这里找到(如何根据列值从DataFrame中选择行?),但是它只适用于一列。我想知道如何将它应用于多列(本例中为两列)中的成对值。

我有一个数据帧df,其中过滤列是B和C(NaN表示空单元格):

    A     B      C  D
0   1  Blue  Green  4
1   2  Blue  Green  6
2   3  Blue  Green  2
3   4  Blue    NaN  6
4   5  Blue    NaN  9
5   6   NaN  Green  8
6   7  Blue  Green  8
7   8   NaN    NaN  9
8   9   NaN  Green  1
9  10   NaN  Green  2
    A     B      C  D
0   1  Blue  Green  4
1   2  Blue  Green  6
2   3  Blue  Green  2
6   7  Blue  Green  8

数据目录的代码:

import pandas as pd
import numpy as np

df = pd.DataFrame({"A": [1,2,3,4,5,6,7,8,9,10], "B": ['Blue', 'Blue', 'Blue', 'Blue','Blue', np.nan, 
'Blue', np.nan, np.nan, np.nan], "C": ['Green', 'Green', 'Green', np.nan, np.nan, 'Green', 'Green', 
np.nan, 'Green', 'Green'], "D": [4,6,2,6,9,8,8,9,1,2]})
print(df)

共有1个答案

劳夕
2023-03-14

我认为您需要的是&运算符:

df[(df['B']=='Blue') & (df['C']=='Green')]
 类似资料:
  • 有一个数据框,一列,例如“cost”,有一些零/空条目,我想保留“cost”列不为零/空的行。如何在熊猫身上做到这一点?

  • 问题内容: 假设我有一个包含A列,B列和C列的表。如何编写查询以选择A列或B列或C列等于某个值的所有行?谢谢。 更新: 我想忘记提及我的困惑了。假设还有另一列(第1列),我需要根据以下逻辑进行选择: …其中Column1 =’..’AND(ColumnA =’..’OR ColumnB =’..’OR ColumnC =’..’) 像我上面用括号所做的那样对语句进行分组以获得所需的逻辑有效吗? 问

  • 问题内容: 我想编写一个查询,该查询返回所有行,直到某一列值的总和达到某个值为止。 例如在下表中: 如果我要获取行,直到列的总和等于7。 如果我要获取行,直到列的总和等于13。 问题答案: 这是一种应在MySQL中工作的方法: 在这种情况下,它涉及计算运行总计并选择记录,而运行总计小于或等于给定数字。 SQL小提琴

  • 我有一个熊猫数据框,有4行4列-这里是一个简单的版本: 我想做的是把它转换成一个2*8的数据帧,每个数组都有B、C和D——所以它看起来像这样: 在阅读熊猫文档时,我尝试了以下方法: 但是给了我一个错误,我无法识别源(以 DataError:没有要聚合的数字类型 ) 接下来,我想根据一个值分割数据帧,但我认为.groupby命令可能会处理它

  • 问题内容: 假设我有以下DataFrame: 这按预期工作: 但这不是: 为什么?我如何在不必写两行的情况下实现“苹果”和“香蕉”值的转换 问题答案: 您应该使用loc, 而无需链接 : 请参阅有关 返回视图与副本的文档,如果将链接分配给副本(并丢弃),但是如果将它分配给一个位置,则大熊猫会聪明地意识到您想要分配给原始副本。

  • 我有下表和Postgres: 作为select查询的一部分,我希望能够基于最高的Col2值(每个Col1值永远不会有多个最高值)在Col1中删除重复项,并保留相应的Col2、Col3值。 期望输出: