Python-使用Panda将多个表添加到单个CSV中

Python-使用Panda将多个表添加到单个CSV中,python,pandas,export-to-csv,Python,Pandas,Export To Csv,我想知道如何将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': 'ReportRa

我想知道如何将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)
我认为只需要,因为
data
是数据帧列表:

df = pd.concat(data, ignore_index=True)
df.to_csv(file, header=False, index=False)
您有两种选择:

  • 您可以告诉熊猫在写入CSV文件时追加数据

    data = pd.read_html(url, attrs = {'class': 'ReportRaceDogFormDetails'} )
    for datas in data:
        datas.to_csv("new.csv", header=False, index=False, mode='a')
    
    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文件

    data = pd.read_html(url, attrs = {'class': 'ReportRaceDogFormDetails'} )
    for datas in data:
        datas.to_csv("new.csv", header=False, index=False, mode='a')
    
    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')
    

    所有表的模式都相同吗?是的,模式是相同的。这可以是一个带有列表理解的单行程序,但为了清晰起见,我选择了上面的形式。感谢您的回复,我收到了一个代码值错误。错误:所有传递的对象都不是。谢谢!你知道在康考特期间如何把桌子分开吗?所以他们不是直来直去的?就像在数据帧之间有一行空格一样,您可以使用
    concat
    中的
    axis=1
    将数据帧并排放置,而不是一个接一个地放置(不确定您想要哪一个)。