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

数据帧列中的布尔运算

赵志
2023-03-14

我试图找出我的DataFrame列中是否存在特定的列,但我有一些问题。

我所做的:使用布尔运算“notin”(我尝试了any()、all()、“in”)来查找特定的列标题,但它似乎工作不正常!

假设我的DataFrame列标题是:

df.columns = ['El-array', 'a', 'b', 'm', 'n', 'Rho', 'dev', 'ip', 'sp', 'vp', 'i',
   'M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'M10', 'M11',
   'M12', 'M13', 'M14', 'M15', 'M16', 'M17', 'M18', 'M19', 'M20', 'TM1',
   'TM2', 'resist', 'DC_slope']

我想看看是否所有的‘M1’、‘M2’、…'M20'和TM1'在那里。如果一个或多个代码丢失,则该代码将不起作用。

所以我说:

    if any(['M1','M2','M3','M4','M5','M6','M7','M8','M9','M10','M11',
        'M12','M13','M14','M15','M16','M17','M18','M19','M20', 'TM1']) not in df.columns: 
        print('Incomplete dataset')

现在,假设df具有所有询问列标题,if语句仍然显示“不完整数据集”消息!!我也试过all()not in,但结果一样!我也尝试过:

if 'M1' and 'M2' and ... and 'M20' and 'TM1' in df.columns:
    "Do this"
elif:
    print('Incomplete dataset')

if 'M1' or 'M2' or ... or 'M20' and 'TM1' not in df.columns:
    print('Incomplete dataset')
elif:
    "Do this"

仍然打印不完整的数据集!!

现在对于一个真正不完整的数据集,我也得到同样的结果!!

共有1个答案

卢黎明
2023-03-14

您对任何的工作方式存在根本性误解。我建议回去看看我链接到的关于这些的文档。

你想要:

names = ['M1','M2','M3','M4','M5','M6','M7','M8','M9','M10','M11',
        'M12','M13','M14','M15','M16','M17','M18','M19','M20', 'TM1']
if any(name not in df.columns for name in names):
    ...
else:
    print('incompatable dataset')

或者(这实际上只是为了获得最小的性能增益),您可以使用设置的差异(返回names中的所有值,但不返回df.columns中的值):

if not set(names) - set(df.columns):
   ...
 类似资料:
  • 我们如何使用scala使用OR操作将布尔列折叠成一行? 第1部分: 期望输出 我能想到的一个解决方案是按第一列条目对它们进行分组,filter true 这个解决方案相当混乱。此外,不知道这是否适用于所有边缘情况。有什么聪明的方法可以做到这一点吗? 编辑:给定的答案适用于上述给定的场景,但不适用于此场景。有什么方法可以实现所需的输出? 第2部分: 期望输出 我试图通过col1和col2分组,然后用

  • 我至少有一个数据帧: 我想保留数据框中低于df['avg'列中平均值的所有值。当我执行以下操作时,返回所有的NAN 如果我设置一个for循环,我可以得到我想要的布尔值。 我要找的东西是这样的: 我该怎么做呢?一定有蟒蛇的方法来做到这一点。

  • 上面的代码失败,因为是布尔变量,聚合不能应用于布尔变量。Spark中是否有一个函数将Spark数据帧的整列的值转换为,并将转换为。 我尝试了以下方法(源代码:如何在Spark SQL的DataFrame中更改列类型?)

  • 我有一系列不同元素的值。值计数显示如下。 我想为每个类别创建列,并为每一行标记True/False。 e. g. 我设法从所有项目中获取了这些类别的唯一列表。我还可以通过在此处的解决方案中给出的方法将其制作成单独的列。 但在我的情况下,数据是不完整的/变化的,因此给我一个DF,如下所示 有没有办法使用熊猫或其他python工具将其转换为所需的输出。我现在正在使用pandas.pivot_table

  • 我有一个简单的熊猫数据框架。 我想保留数据帧的某些行。让我们说所有的“瑞秋”和“杰夫斯”。我尝试了: 结果是只有的数据帧。有没有组合查询的方法?

  • 前言 上个礼拜介绍了Shell编程范例之数值运算,对 Shell 下基本数值运算方法做了简单的介绍,这周将一起探讨布尔运算,即如何操作“真假值”。 在 Bash 里有这样的常量(实际上是两个内置命令,在这里我们姑且这么认为,后面将介绍),即 true 和 false,一个表示真,一个表示假。对它们可以进行与、或、非运算等常规的逻辑运算,在这一节,我们除了讨论这些基本逻辑运算外,还将讨论Shell编