如何将 Pandas 数据添加到现有的 csv 文件中?

2024-12-20 08:37:00
admin
原创
177
摘要:问题描述:我想知道是否可以使用 pandasto_csv()函数将数据框添加到现有的 csv 文件中。csv 文件具有与加载的数据相同的结构。解决方案 1:您可以在 pandas 函数中指定 python 写入模式to_csv。对于附加,它是“a”。就你的情况而言:df.to_csv('my_csv.csv'...

问题描述:

我想知道是否可以使用 pandasto_csv()函数将数据框添加到现有的 csv 文件中。csv 文件具有与加载的数据相同的结构。


解决方案 1:

您可以在 pandas 函数中指定 python 写入模式to_csv。对于附加,它是“a”。

就你的情况而言:

df.to_csv('my_csv.csv', mode='a', header=False)

默认模式为“w”。

如果文件最初可能丢失,则可以使用此变体确保在第一次写入时打印标题:

output_path='my_csv.csv'
df.to_csv(output_path, mode='a', header=not os.path.exists(output_path))

解决方案 2:

您可以通过以附加模式打开文件来附加到 csv :

with open('my_csv.csv', 'a') as f:
    df.to_csv(f, header=False)

如果这是你的 csv foo.csv,:

,A,B,C
0,1,2,3
1,4,5,6

如果你读完该内容然后附加,例如df + 6

In [1]: df = pd.read_csv('foo.csv', index_col=0)

In [2]: df
Out[2]:
   A  B  C
0  1  2  3
1  4  5  6

In [3]: df + 6
Out[3]:
    A   B   C
0   7   8   9
1  10  11  12

In [4]: with open('foo.csv', 'a') as f:
             (df + 6).to_csv(f, header=False)

foo.csv变成:

,A,B,C
0,1,2,3
1,4,5,6
0,7,8,9
1,10,11,12

解决方案 3:

with open(filename, 'a') as f:
    df.to_csv(f, header=f.tell()==0)
  • 如果文件不存在则创建文件,否则附加

  • 如果正在创建文件,则添加标题,否则跳过它

解决方案 4:

我使用一个小辅助函数和一些标头检查保护措施来处理所有问题:

def appendDFToCSV_void(df, csvFilePath, sep=","):
    import os
    if not os.path.isfile(csvFilePath):
        df.to_csv(csvFilePath, mode='a', index=False, sep=sep)
    elif len(df.columns) != len(pd.read_csv(csvFilePath, nrows=1, sep=sep).columns):
        raise Exception("Columns do not match!! Dataframe has " + str(len(df.columns)) + " columns. CSV file has " + str(len(pd.read_csv(csvFilePath, nrows=1, sep=sep).columns)) + " columns.")
    elif not (df.columns == pd.read_csv(csvFilePath, nrows=1, sep=sep).columns).all():
        raise Exception("Columns and column order of dataframe and csv file do not match!!")
    else:
        df.to_csv(csvFilePath, mode='a', index=False, sep=sep, header=False)

解决方案 5:

最初从 pyspark 数据框开始 - 考虑到我的 pyspark 数据框中的架构/列类型,我得到了类型转换错误(转换为 pandas df 然后附加到 csv 时)

通过强制每个 df 中的所有列为字符串类型,然后将其附加到 csv 来解决问题,如下所示:

with open('testAppend.csv', 'a') as f:
    df2.toPandas().astype(str).to_csv(f, header=False)

解决方案 6:

2021 年我就是这样做的

假设我有一个 csv sales.csv,其中包含以下数据:

销售.csv

Order Name,Price,Qty
oil,200,2
butter,180,10

为了添加更多行,我可以将它们加载到数据框中并将其附加到 csv,如下所示:

import pandas

data = [
    ['matchstick', '60', '11'],
    ['cookies', '10', '120']
]
dataframe = pandas.DataFrame(data)
dataframe.to_csv("sales.csv", index=False, mode='a', header=False)

输出结果为:

Order Name,Price,Qty
oil,200,2
butter,180,10
matchstick,60,11
cookies,10,120

解决方案 7:

有点晚了,但是如果您多次打开和关闭文件,或者记录数据,统计数据等,您也可以使用上下文管理器。

from contextlib import contextmanager
import pandas as pd
@contextmanager
def open_file(path, mode):
     file_to=open(path,mode)
     yield file_to
     file_to.close()


##later
saved_df=pd.DataFrame(data)
with open_file('yourcsv.csv','r') as infile:
      saved_df.to_csv('yourcsv.csv',mode='a',header=False)`
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2545  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1551  
  建筑工程全生命周期涉及从项目规划、设计、施工到运营维护等多个复杂阶段,每个阶段都产生和依赖大量信息。PLM(产品生命周期管理)系统作为一种整合数据、流程和人员的数字化解决方案,正逐渐成为建筑行业实现高效协同与可持续发展的关键支撑。通过数字化转型,PLM系统能够优化各阶段的工作流程,提升项目整体质量和效率,为建筑工程的全...
plm是什么软件   1  
  产品生命周期管理(PLM)系统在企业资源成本率优化方面发挥着至关重要的作用。通过构建有效的数据模型,PLM系统能够整合企业各个环节的数据,为资源成本的精准分析和优化提供有力支持。这不仅有助于企业降低成本,还能提升产品质量和市场竞争力。PLM系统概述PLM系统是一种用于管理产品从概念设计到退役全生命周期过程中所有信息和流...
PLM项目管理软件   1  
  产品生命周期管理(PLM)系统在现代企业的产品研发、生产与管理过程中扮演着至关重要的角色。它整合了从产品概念设计到产品退役的全生命周期数据与流程,助力企业提升效率、降低成本并增强创新能力。随着技术的不断发展,到 2025 年,PLM 系统将具备一系列核心功能模块,这些模块将深度影响企业的运营与发展。产品数据管理模块产品...
plm是什么意思   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用