【问题标题】:Drop rows where meet criteria of column values [duplicate]删除符合列值条件的行[重复]
【发布时间】:2019-08-31 00:54:52
【问题描述】:

我有一个名为df的数据框

   a       b  
0  str1    0
1  str2   .8
2  str3   .4
3  str4   .1

我正在遍历这个数据框。 (我知道这不是最有效的方法)。

我想删除b>.7 所在的所有行。这是循环迭代,所以我想从同一个数据帧中删除。

追加的语法如下:

new_df = new_df.append(df[df['a']>.7],ignore_index= 'True')

我可以对 drop 做类似的事情吗?

df.drop(df[df['a']>.7])

我得到错误: ".... not found in axis"

预期结果为df

   a       b  
0  str1    0
2  str3   .4
3  str4   .1

【问题讨论】:

  • 您可能想了解布尔索引
  • df[df['b']<0.7]
  • df[~df['b'].gt(0.7)]

标签: python pandas dataframe


【解决方案1】:

这很容易。并且有多种使用布尔索引的方法:

1) 保留 b 小于或等于 7 的行

df = df[df.b<=0.7]

2) 使用 .loc 表示相同的条件

df = df.loc[df.b<=0.7]

3) 过滤掉大于0.7的行

df=df[~df.b>0.7]

【讨论】:

  • 1和2相同,3略有不同,如果列有nan
猜你喜欢
  • 2014-01-05
  • 1970-01-01
  • 2019-08-08
  • 2020-03-10
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
相关资源
最近更新 更多