首页 > 编程问答 >有没有办法选择将数据框上传到 CSV 的哪个单元格/列,就像将数据抓取到 Excel 文件中一样?

有没有办法选择将数据框上传到 CSV 的哪个单元格/列,就像将数据抓取到 Excel 文件中一样?

时间:2024-07-23 13:29:53浏览次数:17  
标签:python excel pandas csv beautifulsoup

我有将网络数据抓取到 Excel 文件中的经验,并且我知道将数据复制到 Excel 电子表格中时,您可以选择将其复制到哪一列。 ( startcol = 10 如下面的代码片段所示)

with pd.ExcelWriter("jockeyclub.xlsx", engine="openpyxl", mode='a', if_sheet_exists='overlay') as writer:
                    df.to_excel(writer, sheet_name="data", index=False, startcol=10)

但是,当将网络数据抓取到 csv 文件时,我的所有数据帧都将进入同一列,使其成为一个非常长的列。有没有办法选择我可以将每个数据帧上传到 CSV 文件的哪一列?

以下是我用于将数据上传到 CSV 的代码。

df.to_csv('/Users/nicholaschan/Desktop/data.csv', mode='a', index=False, header=False)

无法直接像使用 .to_excel() startcol 那样在 .to_csv() 中选择起始列。 CSV(逗号分隔值)文件本质上是表格的,但它们只存储值,而不存储单元格、列或格式信息。

发生的情况是,一直在将新的数据帧附加到现有的 CSV 文件中,这会导致所有数据都位于同一列中。

为了实现想要的效果,需要执行以下操作:

  1. 读取现有 CSV 文件(如果存在): 这将允许将新数据添加到现有数据中,而不是覆盖它。
  2. 将新数据与现有数据合并: 这将确保的新数据被添加到正确的“列”或 CSV 中的字段位置。
  3. 将合并后的数据帧写入 CSV: 这将用新数据更新 CSV 文件。

以下是使用 pandas 的示例:

import pandas as pd

# 新数据
new_data = {'column1': [1, 2, 3], 'column2': [4, 5, 6]}
df = pd.DataFrame(new_data)

# 尝试读取现有的 CSV 文件。如果文件不存在,则创建一个空的数据帧。
try:
    existing_df = pd.read_csv('/Users/nicholaschan/Desktop/data.csv', header=None)
except FileNotFoundError:
    existing_df = pd.DataFrame()

# 将新数据框与现有的数据框合并。
combined_df = pd.concat([existing_df, df], axis=1)

# 将合并后的数据框写入 CSV 文件。
combined_df.to_csv('/Users/nicholaschan/Desktop/data.csv', mode='w', index=False, header=False)

这段代码将:

  • 尝试读取 data.csv 。如果文件存在,它将加载现有数据。如果文件不存在,它将创建一个新的空数据帧。
  • 使用 axis=1 水平连接(添加列)新数据帧和现有的数据帧。
  • 将合并后的数据帧写回 data.csv ,有效地将新数据“追加”为新列。

重复此过程,每次抓取新的数据集时,它都会作为新列添加到的 CSV 文件中。

标签:python,excel,pandas,csv,beautifulsoup
From: 78781355

相关文章

  • python-input键盘输入
     str=input("请输入:")#用户键盘输入#str表示一个字符串类型的变量,input会将读取到的字符串放入str中print(str) aa='请输入:'str=input(aa)#用户键盘输入#str表示一个字符串类型的变量,input会将读取到的字符串放入str中print(str)      ......
  • Winform小工具:.txt档转excel档
    privatevoidbt_txt_to_excel_Click(objectsender,EventArgse){FolderBrowserDialogfolderDialog=newFolderBrowserDialog();if(folderDialog.ShowDialog()==DialogResult.OK){string......
  • Python从0到100(四十五):从字符串到前后端分离
    前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知......
  • Python的运算符与条件表达式
    一、运算符Python数据是通过使用运算符来进行操作的,与数学运算符类似,主要运用于数字计算,比较大小和逻辑运算。Python中的运算符主要包括算术运算符、赋值运算符、比较运算符、逻辑运算符和位运算符。1.算术运算符算术运算符用在数字表达式中,作用和在数学中是一样的。Python......
  • 在尝试使用 docker 运行基于 pythonnet 的项目时,找不到 C# 运行时
    屏幕截图我不断收到此错误:RuntimeError:Failedtocreateadefault.NETruntime,whichwouldhavebeen"mono"onthissystem.Eitherinstallacompatibleruntimeorconfigureitexplicitlyvia......
  • Python 在模块中使用变量
    如何将一个文件中声明的变量调用到另一个文件中?大家好我已经在file1中声明了我的变量。我的函数位于file2中,它使用该变量。如何调用主文件中声明的变量。提前致谢当然可以!以下是如何在Python中跨文件使用变量:file1.py(包含变量的文件)#在file1.p......
  • Pandas:递归的性能优化
    我有一个代码,看起来像forindex,rowindata.iterrows():data.loc[index,"myCol"]=someFunc(data.loc[index-1,"myCol")该代码正在使用递归,因此我无法对其进行矢量化,因为在许多与iterrows性能相关的问题中都建议使用递归。我在性能方面优化它的最佳方法是什......
  • Python 类型提示和 linter
    我一直在向我们的python项目添加静态类型检查,例如像这样:fromtypingimportListfromsomethingimportMyOtherClassclassMyClass:def__init__(self)->None:self.some_var=None#type:List[MyOtherClass]但是,现在我们使用的linter(flake8和......
  • eclipse如何写python程序
    本文主要介绍在Windows系统环境下,搭建能在Eclipse中运行python程序的环境。一、Eclipse下载与安装:Eclipse是写JAVA的IDE,下载地址为:http://www.eclipse.org/downloads/下载安装,网上教程很多,不赘述。二、pydev插件下载与安装:启动Eclipse,点击Help—>EclipseMarketplace......
  • 运行 python 3 代码时出现 python 2 语法错误
    我有一个如下所示的类classExperimentResult(BaseDataObject):def__init__(self,result_type:str,data:dict,references:list):super().__init__()self.type=result_typeself.references=referencesself.data=data......