我有如下数据:
Index ID data1 data2 ...
0 123 0 NaN ...
1 123 0 1 ...
2 456 NaN 0 ...
3 456 NaN 0 ...
...
我需要删除行数少于或等于其他行中可用信息的行。
在上面的示例中,第0行和2 x或3应该被删除。
到目前为止,我最大的尝试是速度较慢,也无法正常工作:
df.groupby(by='ID').fillna(method='ffill',inplace=True).fillna(method='bfill',inplace=True)
df.drop_duplicates(inplace=True)
我如何最好地实现这个目标?
您的方法似乎很好,仅在此处使用就地分配不起作用(因为您正在分配数据的副本),请使用:
df = df.groupby(by='ID', as_index=False).fillna(method='ffill').fillna(method='bfill')
df.drop_duplicates()
ID data1 data2
0 123 0.0 1.0
2 456 NaN 0.0