我是熊猫新手。我有一个csv文件,其中包含一个经度和纬度列以及一个图块ID列,该文件大约有100万行。我有大约一百个图块ID的列表,想要获取这些图块ID的纬度和经度坐标。目前我有:
good_tiles_str = [str(q) for q in good_tiles]#setting list elements to string data type
file['tile'] = file.tile.astype(str)#setting title column to string data type
for i in range (len(good_tiles_str)):
x = good_tiles_str[i]
lat = file.loc[file['tile'].str.contains(x), 'BL_Latitude'] #finding lat coordinates
long = file.loc[file['tile'].str.contains(x), 'BL_Longitude'] #finding long coordinates
print(lat)
print(long)
此方法非常慢,我知道这不是正确的方法,因为我听说您在使用熊猫时不应使用像这样的循环。此外,由于找不到瓷砖ID的所有纬度和经度点,因此无法正常工作
任何帮助将不胜感激
答案 0 :(得分:1)
据我所知,没有必要显式地迭代行。
如果希望给特定的分配条件,则可以明确地这样做。这是使用numpy.where;的一种方法;我们用〜表示“负数”。
rule1= file['tile'].str.contains(x)
rule2= file['tile'].str.contains(x)
file['flag'] = np.where(rule1 , 'BL_Latitude', " " )
file['flag'] = np.where(rule2 & ~rule1, 'BL_Longitude', file['flag'])
答案 1 :(得分:0)
尝试一下:
search_for = '|'.join(good_tiles_str)
good = file[file.tile.str.contains(search_for)]
good = good[['BL_Latitude', 'BL_Longitude']].drop_duplicates()