我有一个如下所示的数据框:
parent region
estid
1 NaN A
2 NaN B
3 1.0 A
4 1.0 B
5 2.0 C
6 2.0 C
7 8.0 A
Run Code Online (Sandbox Code Playgroud)
我想要的是创建一个包含 的额外列region,parent默认为None如果在数据中找不到父级,例如:
parent region parent_region
estid
1 NaN A None
2 NaN B None
3 1.0 A A
4 1.0 B A
5 2.0 C B
6 2.0 C B
7 8.0 A None
Run Code Online (Sandbox Code Playgroud)
以下返回正确结果:
df["parent_region"] = df.apply(lambda x : df.loc[x["parent"]]["region"] if not math.isnan(x["parent"]) and x["parent"] in df.index else …Run Code Online (Sandbox Code Playgroud) 像http://www.gilacountyaz.gov/government/assessor/index.php这样的网站有一堆内部链接应该是绝对路径,但没有前导斜杠.使用urlparse.urljoin结果解析它们时如下:
>>> import urlparse
>>> a = "http://www.gilacountyaz.gov/government/assessor/index.php"
>>> b = "government/assessor/address_change.php"
>>> urlparse.urljoin(a, b)
'http://www.gilacountyaz.gov/government/assessor/government/assessor/address_change.php'
Run Code Online (Sandbox Code Playgroud)
这会导致Web爬网程序没有意识到它已经访问过页面,并且可能存在无限循环.Firefox和Chrome能够发现问题并正确解析
http://www.gilacountyaz.gov/government/assessor/address_change.php
Run Code Online (Sandbox Code Playgroud)
有没有办法在Python中做同样的事情?请注意,假设始终使用前导斜杠不起作用,因为我们可能正在处理真正的相对路径.