创建一个与现有列区域对应的子区域列的函数

1 投票
1 回答
42 浏览
提问于 2025-04-13 00:00

这里有一个列表

bareas = ['Hosa road', 'Agara', 'Koramangala 4th block', 'Ali Asker road', 'Singasandra']

(这个列表比较长,所以这里只列出了一些项目)。我想创建一个新的列,叫做 sub_area,并且 用居住地所属的子区域名称来标记它

这个 网页 上有关于哪个 居住地 属于哪个 子区域 的详细信息。

总共有8个子区域:

BOMMANAHALLI, DASARAHALLI, MAHADEVAPURA, BYATARAYANAPURA, WEST, EAST, SOUTH, RR_NAGARA

我还是个初学者,所以如果问题不够清楚,请多多包涵。

i have tried the following code
import requests
from bs4 import BeautifulSoup

import pandas as pd
df2015 = pd.read_csv('https://raw.githubusercontent.com/the-curious-analyst/Sem2NITDSProject/main/tanker-water-data-2015.csv', usecols = [*range(0,9,1)])
bareas = list(df2015['Area where apartment is situated'].unique())

zone_list = []

for area in bareas:
  url = "https://kgis.ksrsac.in/Bbmpgis/"
  esri-search__form
  data = {'search': area, 'submit': 'Find Address or Place'}
  response = requests.post(url, data=data)

  soup = BeautifulSoup(response.content, 'html.parser')
  zone_element = soup.find('div', class_='lblzn')

  if zone_element:
    zone_list.append(zone_element.text)
  else:
    zone_list.append(None)

print(zone_list)

1 个回答

0

试试这个:

import requests

params = {
    "SingleLine": "Hosa road",
    "location": '{"spatialReference":{"wkid":102100},"x":8646979.114049532,"y":1449843.5729579679}',
    "maxLocations": "6",
    "outFields": "Addr_type,Match_addr,StAddr,City",
    # "outSR": '{"latestWkid":3857,"wkid":102100}',
    "f": "json",
}

url = "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddressCandidates"

bareas = ["Hosa road", "Koramangala 4th block", "Ali Asker road", "Singasandra"]

for a in bareas:
    params["SingleLine"] = a
    data = requests.get(url, params=params).json()

    # print(data)

    print(a)
    print("-" * 80)
    for c in data["candidates"]:
        print(c["address"])
    print()

输出结果是:

Hosa road
--------------------------------------------------------------------------------
Hosa Road, Kaikondrahalli, Bengaluru, Karnataka, 560035
Hosa Road, Ambalipura, Bengaluru, Karnataka, 560102
Hosa Road, Kasavanahalli, Bengaluru, Karnataka, 560035
Hosa Road, Kasavanahalli, Bengaluru, Karnataka, 560100
Hosa Road, Rayasandra, Bengaluru, Karnataka, 560100
Hosa Road, Rayasandra, Bengaluru, Karnataka, 560035

Koramangala 4th block
--------------------------------------------------------------------------------
4th Block, Koramangala, Bengaluru, Karnataka
Koramangala Ring Road, Koramangala, Bengaluru, Karnataka, 560095
Koramangala Ring Road, Koramangala, Bengaluru, Karnataka, 560034

Ali Asker road
--------------------------------------------------------------------------------
Ali Asker Road, Shivajinagar, Bengaluru, Karnataka, 560001
Ali Asker Road, Vasanth Nagar, Bengaluru, Karnataka, 560001

Singasandra
--------------------------------------------------------------------------------
Singasandra, Bengaluru, Karnataka
Singasandra, Anekal Sub-District, Bengaluru, Karnataka
Singasandra, Kanakapura, Ramanagara, Karnataka
Singasandra, Chintamani, Chikkaballapura, Karnataka
Singasandra, Turuvekere, Tumakuru, Karnataka
Singasandra, Ramanagara, Karnataka

撰写回答