Я пытаюсь создать Pandas
DataFrame
путем итерации по данным в soup
(от BeautifulSoup4
). This SO post предложил использовать метод .loc
для создания Set With Englargement для создания DataFrame
.Создание DataFrame с использованием .loc для установки с увеличением
Однако этот метод занимает много времени (около 8 минут для df из 30 000 строк и 5 столбцов). Есть ли более быстрый способ сделать это. Вот мой код:
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = "http://api.turfgame.com/v3/zones"
r = requests.get(url)
soup = BeautifulSoup(r.content)
col_names = ["name", "lat", "lng", "points_take", "points_hold"]
dfi = pd.DataFrame(columns=col_names)
def get_all_zones():
for attr in soup.find_all("zone"):
col_values= [attr.get("name"), attr.get("lat"), attr.get("lng"), attr.get("points_take"), attr.get("points_hold")]
pos = len(dfi.index)
dfi.loc[pos] = col_values
return dfi
get_all_zones()
использовать словарь, где ключи являются имена столбцов и значения являются столбцами в виде списков (без серий или фреймов). один раз, у вас есть все, передайте словарь на 'pd.DataFrame' –