我有一个数据FRMEdf1如下:lat long可以复制
miles uid lat_long
12 235 (45,67)
13 234 (41.09,67)
14 233 (34,55)
15 236 (12.23,65.78)
16 239 (27,34)
如果lat_long值无效,我想从df1中删除条目。我像下面这样做,但花费了太多时间
all_lat_long = df1["lat_long"].tolist(). #list of tuples
def lat_long_check(each_coordnts):
match = re.match('^\((?P<lat>-?\d*(.\d+)),(?P<long>-?\d*(.\d+))\)$',
str(each_coordnts)) #find invalid lat-long
if match is None:
idx = df1[df1['lat_long'] == each_coordnts].index
df1.drop(idx,inplace=True)
for each_coordnts in all_lat_long:
lat_long_check(each_coordnts)
有没有什么有效的方法来处理一百万条记录?删除错误的lat long条目后,我希望在df1的末尾填充两个新列-“纬度”和“经度”,并填充相应的值
我将进行以下工作:
validate_lat_long
,如果纬度/经度值正确,该函数将返回浮点元组。我假设这与检查值是否在预期间隔内有关(纬度为-90到90,等等)。如果值不正确,函数应返回np.nan
李>dropna
,如果需要保留以前的工作,还可以创建一个新的数据帧:您的代码很可能很慢,因为它在数据帧行上迭代。应用带有
df.apply()
的函数应该可以合理地加快速度。此外,我希望您可以检查浮动,而不是搜索正则表达式相关问题 更多 >
编程相关推荐