我必须在 R 中对几个地址进行地理编码,但收到“已达到超时:连接在 10000 毫秒后超时”错误。我在办公室防火墙后面,所以也尝试使用代理,但仍然遇到相同的错误。
当我使用源作为“dsk”但它不会对大多数地址进行地理编码时,这有效,因此想要使用“google”作为源。
下面是我使用的一段代码。
library(ggmap)
library(curl)
register_google(key = "Have_Entered_My_API_Key_Here")
#Used below code to use proxy...(saw it as a solution in stackoverflow only for working behind firewall..maybe I'm not doing it the correct way?)
library(httr)
set_config(use_proxy(url="10.3.100.207",port=8080))
origAddress <- read.csv("Data_for_Geocoding.csv",header = TRUE,sep = ",",stringsAsFactors = FALSE)
for(i in 1:nrow(origAddress))
{
result <- geocode(origAddress$Add_to_GeoCode[i], output = "latlona", source = "google",sensor = TRUE)
origAddress$LONGITUDE[i] <- as.numeric(result[1])
origAddress$LATITUDE[i] <- as.numeric(result[2])
# origAddress$ <- as.character(result[3])
}
Run Code Online (Sandbox Code Playgroud)
运行此代码时出现以下错误。
“在 curl::curl_fetch_memory(url, handle = handle) 中出错:达到超时:连接在 …
geocoding r reverse-geocoding google-geocoder google-geocoding-api
我在 pandas 中有两个数据框,如下所示。EmpID 是两个数据帧中的主键。
df_first = pd.DataFrame([[1, 'A',1000], [2, 'B',np.NaN],[3,np.NaN,3000],[4, 'D',8000],[5, 'E',6000]], columns=['EmpID', 'Name','Salary'])
df_second = pd.DataFrame([[1, 'A','HR','Delhi'], [8, 'B','Admin','Mumbai'],[3,'C','Finance',np.NaN],[9, 'D','Ops','Banglore'],[5, 'E','Programming',np.NaN],[10, 'K','Analytics','Mumbai']], columns=['EmpID', 'Name','Department','Location'])
Run Code Online (Sandbox Code Playgroud)
我想用 EmpID 连接这两个数据框,以便
我使用下面的代码来实现这一点。
merged_df = pd.merge(df_first,df_second,how='outer',on=['EmpID'])
Run Code Online (Sandbox Code Playgroud)
但这段代码给了我我不想要的重复列,因此我只使用两个表中的唯一列进行合并。
ColNames = list(df_second.columns.difference(df_first.columns))
ColNames.append('EmpID')
merged_df = pd.merge(df_first,df_second,how='outer',on=['EmpID'])
Run Code Online (Sandbox Code Playgroud)
现在我没有得到重复的列,但在键匹配的观察中也没有得到价值。
如果有人能帮助我,我将非常感激。
问候, 凯拉什·内吉