假设我有一个清单:
lits = [1, 1, 1, 2, 0, 0, 0, 0, 3, 3, 1, 4, 5, 2, 2, 2, 0, 0, 0]
我需要这个成为[1, 1, 2, 0, 0, 3, 3, 1, 4, 5, 2, 2, 0, 0]
(删除重复项,但仅限于一系列重复项。要在大型HDF5文件上执行此操作,使用pandas,numpy。宁可不要使用for循环遍历所有元素。
table = table.drop_duplicates(cols='[SPEED OVER GROUND [kts]]', take_last=True)
我可以对此代码进行修改吗?
答案 0 :(得分:1)
在pandas中你可以做一个布尔掩码,只有当它与前一个或后一个值不同时才选择一行:
>>> df=pd.DataFrame({ 'lits':lits })
>>> df[ (df.lits != df.lits.shift(1)) | (df.lits != df.lits.shift(-1)) ]
lits
0 1
2 1
3 2
4 0
7 0
8 3
9 3
10 1
11 4
12 5
13 2
15 2
16 0
18 0