【发布时间】:2022-01-22 18:22:02
【问题描述】:
我有这些数据:
lat = [79.211, 79.212, 79.214, 79.444, 79.454, 79.455, 82.111, 82.122, 82.343, 82.231, 79.211, 79.444]
lon = [0.232, 0.232, 0.233, 0.233, 0.322, 0.323, 0.321, 0.321, 0.321, 0.411, 0.232, 0.233]
val = [2.113, 2.421, 2.1354, 1.3212, 1.452, 2.3553, 0.522, 0.521, 0.5421, 0.521, 1.321, 0.422]
df = pd.DataFrame({"lat": lat, 'lon': lon, 'value':val})
我将它按 lat & lon 分组,然后按 value 列排序并取前 5 位,如下所示:
grouped = df.groupby(["lat", "lon"])
val_max = grouped['value'].max()
df_1 = pd.DataFrame(val_max)
df_1 = df_1.sort_values('value', ascending = False)[0:5]
我得到的输出是这样的:
value
lat lon
79.212 0.232 2.4210
79.455 0.323 2.3553
79.214 0.233 2.1354
79.211 0.232 2.1130
79.454 0.322 1.4520
我想删除上述任何一项的最后一个小数位 1 以内的任何行。所以我们看到第 1 行与第 4 行的位置几乎相同,第 2 行与第 5 行的位置几乎相同,因此第 4 和第 5 将被下一个排名的 lat lon 替换,这将产生输出:
value
lat lon
79.212 0.232 2.4210
79.455 0.323 2.3553
79.214 0.233 2.1354
82.343 0.321 0.5421
82.111 0.321 0.5220
请告诉我该怎么做。
【问题讨论】:
-
我认为您的意思是“行”,而不是“列”。如果在删除相似的行之后,你最终得到了另一对相似的行,你是否要删除它们?
-
谢谢,是的,我的意思是排。我已经改变了。是的,我也想删除它们。
-
@ThisFieldIsRequired 你知道怎么做吗?
-
如果不需要继续删除类似的,我想我会知道该怎么做。
-
能否请您告诉我该怎么做,然后我看看是否可以编辑它?
标签: python pandas dataframe numpy