使用熊猫删除基于行的列的值

用户名

我是熊猫的新手,需要一些帮助来删除下面原始表中满足某些条件的行。

表1(原始表):

    ID  SerialNo    calls
1   171723  Blue    2
2   171723  Green   3
3   171723  Blue    4
4   171723  Yellow  5
5   171723  Blue    1
6   171724  Green   1
7   171724  Yellow  2
8   171724  Green   3
9   171724  Green   4
10  171724  Green   5
11  171724  Yellow  6

Table1_mod(过滤后的表格):

    ID  SerialNo    calls
 1  171723  Blue    2
 2  171723  Green   3
 3  171723  Blue    4
 4  171723  Yellow  5
 5  171724  Green   1
 6  171724  Yellow  2
 7  171724  Green   3
 8  171724  Green   4
 9  171724  Green   5
10  171724  Yellow  6

我想基于以下内容获取修改后的表:

ID列包含唯一编号。例如,对于所有带有'171723'的行,并且在'SerialNO'列下,我对'Blue'感兴趣。因此,我想删除“ 171723”的最后一行,因为蓝色(SerialNo列)具有对应于“ 1”(呼叫列)的行,该行小于“ 2”(“ 171723”在呼叫列上首次出现蓝色) )

如何编写熊猫代码来删除满足这些条件的行?

谢谢

特瓦什塔尔

我认为您可以使用Apply和单独的dict一次完成所有操作,以跟踪您的最大通话价值。这还涉及以下事实:我认为您想丢弃该ID为SerialNo组合的呼叫号低于前一行的任何行。

max_dict = {}

def keep_row(row):
    if row.calls > max_dict.get((row.ID, row.SerialNo), 0):
        max_dict[(row.ID, row.SerialNo)] = row.calls
        return True
    else:
        return False

Table1_mod = Table1[Table1.apply(keep_row, axis=1)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章