Python - добавление нескольких таблиц в один CSV с Panda - PullRequest
0 голосов
/ 09 мая 2018

Мне интересно, как перевести анализируемые таблицы из panda в один CSV, мне удалось поместить каждую таблицу в отдельный CSV для каждого, но хотелось бы, чтобы все они были в одном CSV. Это мой текущий код для получения нескольких CSV:

import pandas as pd
import csv

url = "https://fasttrack.grv.org.au/RaceField/ViewRaces/228697009? 
raceId=318809897"

data = pd.read_html(url, attrs = {'class': 'ReportRaceDogFormDetails'} )

for i, datas in enumerate(data):

    datas.to_csv("new{}.csv".format(i), header = False, index = False)

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Я думаю, нужно только concat, потому что data - это список DataFrames:

df = pd.concat(data, ignore_index=True)
df.to_csv(file, header=False, index=False)
0 голосов
/ 09 мая 2018

У вас есть 2 варианта:

  1. Вы можете указать пандам добавлять данные при записи в файл CSV.

    data = pd.read_html(url, attrs = {'class': 'ReportRaceDogFormDetails'} )
    for datas in data:
        datas.to_csv("new.csv", header=False, index=False, mode='a')
    
  2. Объедините все таблицы в один DataFrame, а затем запишите это в файл CSV.

    data = pd.read_html(url, attrs = {'class': 'ReportRaceDogFormDetails'} )
    df = pd.concat(data, ignore_index=True)
    df.to_csv("new.csv", header=False, index=False)
    

Редактировать

Чтобы по-прежнему разделять кадры данных в CSV-файле, нам нужно придерживаться варианта № 1, но с некоторыми добавлениями

data = pd.read_html(url, attrs = {'class': 'ReportRaceDogFormDetails'} )
with open('new.csv', 'a') as csv_stream:
    for datas in data:
        datas.to_csv(csv_stream, header=False, index=False)
        csv_stream.write('\n')
0 голосов
/ 09 мая 2018
all_dfs = []

for i, datas in enumerate(data):
    all_dfs.append(datas.to_csv("new{}.csv".format(i), header = False, index = False))

result = pd.concat(all_dfs)
...