как исправить ошибку индексации и очистить данные с веб-страницы - PullRequest
1 голос
/ 10 мая 2019

Я хочу очистить данные с веб-страницы с машины обратного хода, используя панд.Я использовал разделение строк, чтобы разделить некоторую строку, если она присутствует.

URL-адрес веб-страницы this

Вот мой код:

import pandas as pd

url =  "https://web.archive.org/web/20140528015357/http://eciresults.nic.in/statewiseS26.htm"
dfs = pd.read_html(url)

df = dfs[0]

idx = df[df[0] == '\xa0Next >>'].index[0]
# Error mentioned in comment happens on the above line.


cols = list(df.iloc[idx-1,:])
df.columns = cols

df = df[df['Const. No.'].notnull()]
df = df.loc[df['Const. No.'].str.isdigit()].reset_index(drop=True)
df = df.dropna(axis=1,how='all')

df['Leading Candidate'] = df['Leading Candidate'].str.split('i',expand=True)[0]
df['Leading Party'] = df['Leading Party'].str.split('iCurrent',expand=True)[0]
df['Trailing Party'] = df['Trailing Party'].str.split('iCurrent',expand=True)[0]
df['Trailing Candidate'] = df['Trailing Candidate'].str.split('iAssembly',expand=True)[0]


df.to_csv('Chhattisgarh_cand.csv', index=False)

Ожидаемый вывод с этой веб-страницы должен быть в формате CSV, как Output

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Вы можете использовать BeautifulSoup для извлечения данных. Panadas поможет вам эффективно обрабатывать данные, но не предназначен для извлечения данных.

import pandas as pd
from bs4 import BeautifulSoup
import requests
response = requests.get('https://web.archive.org/web/20140528015357/http://eciresults.nic.in/statewiseS26.htm?st=S26')
soup = BeautifulSoup(response.text,'lxml')
table_data = []
required_table = [table for table in soup.find_all('table') if str(table).__contains__('Indian National Congress')]
if required_table:
    for tr_tags in required_table[0].find_all('tr',{'style':'font-size:12px;'}):
        td_data = []
        for td_tags in tr_tags.find_all('td'):
            td_data.append(td_tags.text.strip())
        table_data.append(td_data)
df = pd.DataFrame(table_data[1:])
# print(df.head())
df.to_csv("DataExport.csv",index=False)

Вы можете ожидать такой результат в pandas dataframe,

                0   1  ...       6                7
0        BILASPUR   5  ...  176436  Result Declared
1            DURG   7  ...   16848  Result Declared
2  JANJGIR-CHAMPA   3  ...  174961  Result Declared
3          KANKER  11  ...   35158  Result Declared
4           KORBA   4  ...    4265  Result Declared
0 голосов
/ 10 мая 2019

Приведенный ниже код должен получить вам таблицу в вашей URL-ссылке («Статус результата Chhattisgarh») с использованием комбинации BS и панд;Вы можете сохранить его как CSV:

from bs4 import BeautifulSoup
import urllib.request
import pandas as pd

url =  "https://web.archive.org/web/20140528015357/http://eciresults.nic.in/statewiseS26.htm?st=S26"

response = urllib.request.urlopen(url)
elect = response.read()
soup = BeautifulSoup(elect,"lxml")
res = soup.find_all('table')
df = pd.read_html(str(res[7]))
df[3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...