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

筛选值小于0的dataframe的行

翟修永
2023-03-14

我有一个像这样的熊猫数据框

df = pd.DataFrame(data=[[21, 1],[32, -4],[-4, 14],[3, 17],[-7,NaN]], columns=['a', 'b'])
df

我希望能够删除列列表中所有带负值的行,并使用NaN保存行。

在我的示例中,只有2列,但我的数据集中有更多的列,所以我无法逐个完成。

共有3个答案

郎飞龙
2023-03-14

我正在寻找一种不改变数据类型的解决方案(如果按照使用dropna的答案中的建议,NaN与INT混合在一起,就会发生这种情况。因为提问者的数据中已经有了NaN,这对他们来说可能不是问题。我使用的解决方案保留了int64dtype。下面是我的示例数据:

df = pd.DataFrame(data={'a':[0, 1, 2], 'b': [-1,0,1], 'c': [-2, -1, 0]})
columns = ['b', 'c']
filter_ = (df[columns] >= 0).all(axis=1)
df[filter_]


   a  b  c
2  2  1  0
子车凯泽
2023-03-14

我发现你可以通过这样做来简化答案:

>>> cols = ['b']
>>> df = df[df[cols] > 0]

dropna()不是就地方法,因此必须存储结果。

>>> df = df.dropna()
范翰飞
2023-03-14

如果要将其应用于所有列,请执行df[df]

>>> df[df > 0].dropna()
    a   b
0  21   1
3   3  17

如果您知道要应用它的列,那么只对那些具有df[df[ol]的列执行

>>> cols = ['b']
>>> df[cols] = df[df[cols] > 0][cols]
>>> df.dropna()
    a   b
0  21   1
2  -4  14
3   3  17

 类似资料:
  • 我现在有点困惑,所以我有一个方法应该返回

  • 我在spark中有以下命令, 有一组单词,data有三个字符串列,取自。 现在,只要中每个单词的单词模式出现在三列数据中的任何一列中,我就希望过滤掉数据中的行(spark dataframe)。 例如,如果有诸如之类的单词,并且如果三列数据中的任何一列包含诸如、等值,我希望过滤掉该行。 我尝试了以下方法: 这只适用于一个词。但是我想检查中的所有单词并删除它。有办法做到这一点吗? 我对Pyspark

  • 我试图过滤initialItems中索引小于当前项的所有项。例如,如果名称是CM,我需要将QS、IT和AB显示在可拖动的下拉菜单中。然而,我一直在讨论如何使用filter和findIndex javascript函数来执行此操作。 带过滤功能的代码: 安慰initialItems的日志对象:

  • 我有一个包含值和附加信息的数据框架。我希望能够提取只属于一种信息的值。我不知道会预先查询哪些值和多少值。所以,有可能只调用一次带有附加信息“foo”的值,有时使用附加信息“bar”和“baz”,所以使用简化的数据帧 我试过了 但是我得到了一个ValueError:级数的真值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。但是我无法使用any()-函

  • 我使用的是Spark 1.3.0和Spark Avro 1.0.0。我从存储库页面上的示例开始工作。以下代码运行良好 但是如果我需要查看doctor字符串是否包含子字符串,该怎么办?因为我们是在字符串中编写表达式。我该怎么做“包含”?

  • 我在让范围过滤器更具动态性方面遇到了问题。 过滤代码: 而不是硬编码的最小值0和最大值100,我想得到字段verkoopprijs的最小值和最大值。 搜索结果如下所示: 然而我不知道如何得到最小值和最大值。