我是熊猫的新手,需要一些帮助来删除下面原始表中满足某些条件的行。
表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] 删除。
我来说两句