加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Pandas根据条件过滤行,但始终保留第一行

发布时间:2020-12-20 11:10:21 所属栏目:Python 来源:网络整理
导读:我想删除一些符合特定条件的行,但即使第一行符合该条件,我也不想删除第一行. 我尝试使用df.drop函数删除行,但如果第一行符合该条件,它将擦除第一行.我不要那个. 数据看起来像这样: Column1 Column2 Column3 1 3 A 2 1 B 3 3 C 4 1 D 5 1 E 6 3 F 我想这样做
我想删除一些符合特定条件的行,但即使第一行符合该条件,我也不想删除第一行.

我尝试使用df.drop函数删除行,但如果第一行符合该条件,它将擦除第一行.我不要那个.

数据看起来像这样:

Column1 Column2 Column3
  1        3      A
  2        1      B
  3        3      C
  4        1      D
  5        1      E
  6        3      F

我想这样做,如果一行在column2中的值为3,然后删除它.

我希望新数据是这样的(在删除之后但保留第一行,即使第一行在第2列中的值为3):

Column1 Column2 Column3
  1        3      A
  2        1      B
  4        1      D
  5        1      E

解决方法

您可以将“保留第一行”作为删除/保留行的条件的一部分.

保持行的条件是< ORIGINAL CONDITION>或者<保持第一行的条件>.在代码中,这是

# (condition to drop 3) | (condition to keep 0th row)
df[(df['Column2'] != 3) | (df.index == 0)]

   Column1  Column2 Column3
0        1        3       A
1        2        1       B
3        4        1       D
4        5        1       E

相反,使用DeMorgan定律,删除行的条件是(df [‘Column2’] == 3)& (df.index!= 0).然后我们将条件反转以获得我们的预期输出,

df[~((df['Column2'] == 3) & (df.index != 0))]

   Column1  Column2 Column3
0        1        3       A
1        2        1       B
3        4        1       D
4        5        1       E

假设您的索引是RangeIndex,这些工作.如果不是,请使用pd.RangeIndex(len(df))== 0作为第二个条件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读