【问题标题】:Unable to save Multiple dataframe into single csv ,Only last df is getting saved无法将多个数据框保存到单个 csv 中,只有最后一个 df 被保存
【发布时间】:2022-01-12 16:57:21
【问题描述】:

我正在尝试从单个网页中抓取多个表格,但无法将其保存到 .csv 文件。只有最后一个表被保存在下面是代码,请建议

import time
from selenium import webdriver
import pandas as pd

base_url = 'https://uk.insight.com/en_GB/shop/product/2W1F2EA%23ABU/HEWLETT-PACKARD-(HP-INC)/2W1F2EA%23ABU/HP-ProBook-440-G8--14"--Core-i7-1165G7--16-GB-RAM--1-TB-SSD--UK/'
print('Opening Chrome Browser Automatically in 5 secs')
time.sleep(5)
options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=options)
driver.get(base_url)
df = pd.read_html(driver.page_source)
df2 = df[4:]
for table in df2:
    df = pd.DataFrame(table)
    df.to_csv('table.csv',index=False)

我不知道如何按照上面的方法将所有数据帧保存到单个 .csv 中,只有最后一个 df 被保存。

【问题讨论】:

  • 是要将每张表保存到单独的csv文件中,还是将所有表合并为一个并将合并后的表保存到一个csv文件中?
  • 我想将所有组合表保存到一个 csv
  • 所有表的列数和列名是否相同?
  • 是的,列数相同,但列名不同
  • 您可以尝试在循环之前创建一个列表,然后将每个df 附加到列表中,然后在循环之后调用pd.concat(df)pd.concat(df, axis=1)。这两个都将返回数据帧。

标签: python pandas dataframe selenium csv


【解决方案1】:

Pandas .to_csv() 文档中,您可以使用mode 参数来追加数据而不是覆盖。默认设置为“w”。

如果要追加数据,可以将模式切换为“a”

df.to_csv('table.csv', mode='a', index=False)

需要注意的是,除非您设置header = False,否则列名也将被附加

这是一个可快速复制的示例。

import uuid
import pandas as pd

dataframe = pd.DataFrame({
    "person_id": [str(uuid.uuid4())[:7] for _ in range(6)],
    "hours_worked": [38.5, 41.25, "35.0", 27.75, 22.25, -20.5],
    "wage_per_hour": [15.1, 15, 21.30, 17.5, 19.50, 25.50],
})


dataframe2 = pd.DataFrame({
    "person_id2": [str(uuid.uuid4())[:7] for _ in range(6)],
    "hours_worked2": [38.5, 41.25, "35.0", 27.75, 22.25, -20.5],
    "wage_per_hour2": [15.1, 15, 21.30, 17.5, 19.50, 25.50],
})

dataframe.to_csv('TEST.csv', mode='w', index=False)
dataframe2.to_csv('TEST.csv', mode='a', index = False, header=False)

print(pd.read_csv('TEST.csv'))

输出

   person_id  hours_worked  wage_per_hour
0    1aa66bc         38.50           15.1
1    b7abe05         41.25           15.0
2    15e1779         35.00           21.3
3    3c117d7         27.75           17.5
4    2e6494e         22.25           19.5
5    2a25e45        -20.50           25.5
6    b17d084         38.50           15.1
7    6ca361e         41.25           15.0
8    2cd18e4         35.00           21.3
9    9d120ff         27.75           17.5
10   a0b20d9         22.25           19.5
11   bf9a98d        -20.50           25.5

【讨论】:

    猜你喜欢
    • 2021-05-16
    • 2015-10-04
    • 2019-12-15
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2022-06-17
    相关资源
    最近更新 更多