我已经在邮政编码的dataframe列上使用了map函数,创建了一个新的元组序列,然后可以将其操作到新的dataframe中。
def scrape_data(series_data):
#A bit of code to create the URL goes here
r = requests.get(url)
root_content = r.content
root = lxml.html.fromstring(root_content)
address = root.cssselect(".lr_results ul")
for place in address:
address_property = place.cssselect("li a")[0].text
house_type = place.cssselect("li")[1].text
house_sell_price = place.cssselect("li")[2].text
house_sell_date = place.cssselect("li")[3].text
return address_property, house_type, house_sell_price, house_sell_date
df = postcode_subset['Postcode'].map(scrape_data)
虽然它可以在结果页上只有一个属性的情况下工作,但无法为多个属性创建元组。
我想做的是遍历一系列页面,然后将这些内容添加到 Dataframe 中。我知道Pandas可以将嵌套的字典转换为 Dataframe ,但很难让它工作。我试着使用How to make a nested dictionary and dynamically append data的答案,但我迷路了。
2条答案
按热度按时间fdx2calv1#
目前,你的函数只返回
address
中的第一个place
(通常在python中,你会使用yield
(而不是return
)来作为生成器检索所有结果。当随后执行apply/map时,您通常希望函数返回一个Series...
不过,我想你只是想返回下面的DataFrame:
polhcujo2#
为了使代码正常工作,我最终修改了Andy Hayden的解决方案:
至少我现在对Python数据结构的工作原理有了更多的了解。