Добавление строк в CSV с пандами - дублирующиеся заголовки - PullRequest
0 голосов
/ 20 сентября 2018

У меня установлено «добавление», но когда он извлекает информацию из таблицы, он добавляет заголовок для каждой записи.Я прочитал несколько тем здесь, но не нашел ничего, что сработало.Вот 4 из URL, которые я использую, и код, который у меня есть.

http://www.wvlabor.com/new_searches/contractor_RESULTS.cfm?wvnumber=WV057804&contractor_name=&dba=&city_name=&County=&Submit3=Search+Contractors http://www.wvlabor.com/new_searches/contractor_RESULTS.cfm?wvnumber=WV057805&contractor_name=&dba=&city_name=&County=&Submit3=Search+Contractors http://www.wvlabor.com/new_searches/contractor_RESULTS.cfm?wvnumber=WV057806&contractor_name=&dba=&city_name=&County=&Submit3=Search+Contractors http://www.wvlabor.com/new_searches/contractor_RESULTS.cfm?wvnumber=WV057807&contractor_name=&dba=&city_name=&County=&Submit3=Search+Contractors

import csv
from urllib.request import urlopen
import pandas as pd

contents = []
with open('WV_urls.csv','r') as csvf: # Open file in read mode
    urls = csv.reader(csvf)
    for url in urls:
        contents.append(url) # Add each url to list contents

    for url in contents:  # Parse through each url in the list.
        page = urlopen(url[0]).read()
        df, header = pd.read_html(page)
        df.to_csv('WV_Licenses_Daily.csv', index=False, header=None, mode='a')

Однако, если я использую только 2 URL-адреса, он печатаетзаголовок и добавляет второй файл.

calls_df, header = pd.read_html('http://www.wvlabor.com/new_searches/contractor_RESULTS.cfm?wvnumber=WV057728&contractor_name=&dba=&city_name=&County=&Submit3=Search+Contractors', header=0)
calls_df1, header = pd.read_html('http://www.wvlabor.com/new_searches/contractor_RESULTS.cfm?wvnumber=WV057729&contractor_name=&dba=&city_name=&County=&Submit3=Search+Contractors', header=0)

calls_df.to_csv('WV_Licenses_Daily.csv', index=False, header=None, mode='w')
calls_df1.to_csv('WV_Licenses_Daily.csv', index=False, header=None, mode='a')

1 Ответ

0 голосов
/ 20 сентября 2018
  1. Вы пропустили аргумент заголовка в приведенном выше коде, поэтому он создает заголовок в каждом добавлении файла.df, header = pd.read_html(page)
  2. Если вы поставите заголовок как 0 , тогда он даст результаты, как вы хотите, но все равно вы пропустите верхний заголовок, так как вы по умолчанию добавляете пустой файлкоторый не имеет никаких данных


    import csv
    from urllib.request import urlopen
    import pandas as pd

    contents = []
    with open('WV_urls.csv','r') as csvf: # Open file in read mode
        urls = csv.reader(csvf)
        for url in urls:
            contents.append(url) # Add each url to list contents
        for url in contents:  # Parse through each url in the list.
            page = urlopen(url[0]).read()
            df, header = pd.read_html(page,header=0)
            df.to_csv('WV_Licenses_Daily.csv', index=False, header=None, mode='a')

Вы можете создать пустой фрейм данных с необходимыми столбцами.После этого вы можете добавить к нему фреймы данных.


    import csv
    from urllib.request import urlopen
    import pandas as pd

    contents = []
    df  = pd.DataFrame(columns=['WV Number', 'Company', 'DBA', 'Address', 'City', 'State', 'Zip','County', 'Phone', 'Classification*', 'Expires']) #initialize the data frame with columns
    with open('WV_urls.csv','r') as csvf: # Open file in read mode
        urls = csv.reader(csvf)
        for url in urls:
            contents.append(url) # Add each url to list contents
        for url in contents:  # Parse through each url in the list.
            page = urlopen(url[0]).read()
            df1, header = pd.read_html(page,header=0)#reading with header
            df=df.append(df1) # append to dataframe

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...