【问题标题】:Pandas drop() deletes every rows that has same id numberPandas drop() 删除具有相同 ID 号的每一行
【发布时间】:2022-08-20 13:05:55
【问题描述】:

我有一个如下所示的数据框。我想从日期框架中删除所有 F 级,但是当我编写下面的代码时,它也会删除所有相同的 ID 号。在这种情况下,所有 id 编号 101 都将被删除。但我只想保持状态通过。只有F级不及格。

df.drop(df.index[df['Grade'] == 'F'], inplace=True)

ID Lesson Status Grade
101 Math Passed A
545 History Passed B
789 English Failed F
101 History Failed F
475 Math Passed C
689 Enlish Passed D

【问题讨论】:

  • 尝试使用 groupby 然后只删除?
  • 发生这种情况是因为您有重复的索引。使用布尔索引。

标签: python pandas drop


【解决方案1】:

除非我不明白您要做什么,否则您可以简单地执行以下操作:

df2 = df[df['Grade'] != 'F']

df2
ID  Lesson  Status  Grade
0   101 Math    Passed  A
1   545 History Passed  B
4   475 Math    Passed  C
5   689 Enlish  Passed  D

【讨论】:

    【解决方案2】:

    最好只创建和使用掩码,而不是你正在做的事情,即使用索引过滤然后删除

    >>> df[df.Grade.ne('F')]
          Lesson  Status Grade
    ID                        
    101     Math  Passed     A
    545  History  Passed     B
    475     Math  Passed     C
    689   Enlish  Passed     D
    

    【讨论】:

      猜你喜欢
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 2018-08-09
      • 2020-12-23
      • 2020-01-30
      • 1970-01-01
      相关资源
      最近更新 更多