pandas.DataFrame.to_csv#

DataFrame.to_csv(path_or_buf=None, *, sep=',', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression='infer', quoting=None, quotechar='"', lineterminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal='.', errors='strict', storage_options=None)[源代码]#

将对象写入逗号分隔值(csv)文件。

参数:
path_or_bufstr, 路径对象, 类文件对象, 或 None, 默认 None

字符串、实现 os.PathLike[str] 的路径对象,或实现 write() 函数的类文件对象。如果为 None,结果将作为字符串返回。如果传递的是非二进制文件对象,应使用 newline=’’ 打开,禁用通用换行符。如果传递的是二进制文件对象,mode 可能需要包含 ‘b’

sepstr, 默认 ‘,’

长度为1的字符串。输出文件的字段分隔符。

na_repstr, 默认 ‘’

缺失数据表示。

float_formatstr, Callable, 默认 None

浮点数的格式字符串。如果给定一个可调用对象,它优先于其他数值格式参数,如小数。

序列,可选

要写入的列。

标题bool 或 str 列表, 默认 True

写出列名。如果给定一个字符串列表,则假定它们是列名的别名。

索引布尔值, 默认为 True

写入行名(索引)。

index_labelstr 或序列,或 False,默认 None

如果需要,索引列的列标签。如果没有给出,并且 headerindex 为 True,则使用索引名称。如果对象使用 MultiIndex,则应给出序列。如果为 False,则不打印索引名称的字段。使用 index_label=False 以便于在 R 中导入。

模式{‘w’, ‘x’, ‘a’}, 默认 ‘w’

转发到 open(mode=)fsspec.open(mode=) 以控制文件打开。典型值包括:

  • ‘w’, 先截断文件。

  • ‘x’, 独占创建,如果文件已存在则失败。

  • ‘a’, 如果文件存在,追加到文件末尾。

编码str, 可选

一个表示要在输出文件中使用的编码的字符串,默认为 ‘utf-8’。如果 path_or_buf 是一个非二进制文件对象,则不支持 encoding

压缩str 或 dict,默认 ‘infer’

用于对输出数据进行即时压缩。如果 ‘infer’ 并且 ‘path_or_buf’ 是类路径,则从以下扩展名中检测压缩:’.gz’, ‘.bz2’, ‘.zip’, ‘.xz’, ‘.zst’, ‘.tar’, ‘.tar.gz’, ‘.tar.xz’ 或 ‘.tar.bz2’(否则不压缩)。设置为 None 表示不压缩。也可以是一个字典,键 'method' 设置为 {'zip', 'gzip', 'bz2', 'zstd', 'xz', 'tar'} 之一,其他键值对将转发给 zipfile.ZipFile, gzip.GzipFile, bz2.BZ2File, zstandard.ZstdCompressor, lzma.LZMAFiletarfile.TarFile,分别。例如,以下内容可以传递以实现更快的压缩并创建可复现的 gzip 存档:compression={'method': 'gzip', 'compresslevel': 1, 'mtime': 1}

Added in version 1.5.0: 增加了对 .tar 文件的支持。

可能是一个字典,键为 ‘method’ 表示压缩模式,如果压缩模式是 ‘zip’,则其他条目为额外的压缩选项。

在字典中将压缩选项作为键传递,支持的压缩模式有 ‘gzip’, ‘bz2’, ‘zstd’, 和 ‘zip’。

引用来自csv模块的可选常量

默认为 csv.QUOTE_MINIMAL。如果你设置了一个 float_format,那么浮点数会被转换为字符串,因此 csv.QUOTE_NONNUMERIC 会将它们视为非数字。

quotechar : str, 默认 ‘”’str, 默认 ‘”’

长度为1的字符串。用于引用字段的字符。

lineterminatorstr, 可选

在输出文件中使用的新行字符或字符序列。默认为 os.linesep,这取决于调用此方法的操作系统(Linux 为 ‘n’,Windows 为 ‘rn’,即)。

在 1.5.0 版本发生变更: 之前是 line_terminator,为了与 read_csv 和标准库 ‘csv’ 模块保持一致而更改。

chunksize整数或无

一次要写入的行数。

日期格式str, 默认为 None

用于 datetime 对象的格式字符串。

双引号布尔值, 默认为 True

控制字段内 quotechar 的引用。

escapecharstr, 默认为 None

长度为1的字符串。用于在适当时候转义 sepquotechar 的字符。

decimalstr, 默认 ‘.’

识别为小数分隔符的字符。例如,使用 ‘,’ 表示欧洲数据。

错误str, 默认 ‘strict’

指定如何处理编码和解码错误。有关完整的选项列表,请参见 open() 的 errors 参数。

storage_options字典, 可选

对于特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于HTTP(S) URL,键值对会作为头选项转发到 urllib.request.Request。对于其他URL(例如以“s3://”和“gcs://”开头),键值对会转发到 fsspec.open。请参阅 fsspecurllib 获取更多详细信息,关于存储选项的更多示例请参考 这里

返回:
无或字符串

如果 path_or_buf 是 None,则返回生成的 csv 格式为字符串。否则返回 None。

参见

read_csv

将 CSV 文件加载到 DataFrame 中。

to_excel

将 DataFrame 写入 Excel 文件。

示例

创建包含 ‘df’ 的 ‘out.csv’ 文件,不带索引

>>> df = pd.DataFrame(
...     [["Raphael", "red", "sai"], ["Donatello", "purple", "bo staff"]],
...     columns=["name", "mask", "weapon"],
... )
>>> df.to_csv("out.csv", index=False)  

创建包含 ‘out.csv’ 的 ‘out.zip’

>>> df.to_csv(index=False)
'name,mask,weapon\nRaphael,red,sai\nDonatello,purple,bo staff\n'
>>> compression_opts = dict(
...     method="zip", archive_name="out.csv"
... )  
>>> df.to_csv(
...     "out.zip", index=False, compression=compression_opts
... )  

要将csv文件写入新文件夹或嵌套文件夹,您首先需要使用Pathlib或os创建它:

>>> from pathlib import Path  
>>> filepath = Path("folder/subfolder/out.csv")  
>>> filepath.parent.mkdir(parents=True, exist_ok=True)  
>>> df.to_csv(filepath)  
>>> import os  
>>> os.makedirs("folder/subfolder", exist_ok=True)  
>>> df.to_csv("folder/subfolder/out.csv")