【问题标题】:Drop rows before a column value changes the first time在列值第一次更改之前删除行
【发布时间】:2022-09-20 01:27:55
【问题描述】:

我有数千个 pd.Dataframes,它们看起来类似于下面的示例 df。 我想在le 列中的值第一次更改之前删除所有行,除了最后一行具有重复值。例如,我想在这里删除df 中的前两行。但是,我没有找到可以用于我拥有的所有数据帧的通用解决方案。

id     no     parent  le               dia
10     1           1  9.18359371679495  112.963635499912           
10     1           1  9.18359371679495  102.261060580237            
10     1           1  9.18359371679495  102.261060580237        
10     1           1   46.531309334225  75.1405324759379           
10     1           1   148.45737705256  68.9880315000758           
10     1           1  266.349709386555  68.9880315000758
10     1           1   352.40977395104  68.9880315000758        
10     1           1   352.40977395104  68.9880315000758       
10     1           1   352.40977395104  68.9880315000758 
...

我试图通过删除重复项来解决此问题,但稍后应保留重复项,然后应保留第一个更改。 最后的df 应该是这样的:

id     no     parent  le                dia
10     1           1  9.18359371679495  102.261060580237        
10     1           1   46.531309334225  75.1405324759379           
10     1           1   148.45737705256  68.9880315000758           
10     1           1  266.349709386555  68.9880315000758
10     1           1   352.40977395104  68.9880315000758        
10     1           1   352.40977395104  68.9880315000758       
10     1           1   352.40977395104  68.9880315000758            
...

【问题讨论】:

  • 也许drop_duplicateskeep='last'
  • 如果有多个重复项并且我只想删除第一个重复项并忽略较低行中的所有其他重复项,这将不起作用
  • 是的,我更新了示例数据

标签: python pandas dataframe drop


【解决方案1】:

尝试:

df.drop_duplicates('le', keep='last')

id  no      parent  le          dia
10  1       1       9.183594    102.261061
10  1       1       46.531309   75.140532
10  1       1       148.457377  68.988032
10  1       1       266.349709  68.988032

【讨论】:

  • 如果有更多我不想删除的重复项,这将不起作用。我只想删除重复的直到第一个“不重复”并保留最后一个重复。
  • 你可以再举一个例子,这样我就可以理解更多
  • 我更新了示例
  • 在您更新的输出中,仅删除了前 2 行,为什么?另一个重复的呢?你需要解释更多。您只需要删除第一个看到的重复项吗?
  • 正如上面在原始帖子中所写的那样,我只想删除行,直到 le 中的值第一次更改并保留最后一个副本。所以我只想删除第一次看到的重复项
猜你喜欢
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 2010-11-24
  • 2020-06-22
  • 1970-01-01
  • 2011-11-02
相关资源
最近更新 更多