Pandas DataFrame.to_csv(~)
方法将源 DataFrame 转换为逗号分隔值格式。
参数
1.path_or_buf
| string
或 file handle
| optional
写入 csv 的路径。默认情况下,csv 以字符串形式返回。
2. sep
| string
长度为 1 | optional
要使用的分隔符。默认情况下,sep=","
。
3. na_rep
| string
| optional
用于替换源 DataFrame 中的 NaN
的值。
4. float_format
| string
| optional
浮点数的格式字符串。
5. columns
| sequence
| optional
要包含的列的标签。所有其他列都将从生成的 csv 中排除。默认情况下,所有列都包含在生成的 csv 中。
6. header
| boolean
或list
或string
| optional
是否在 csv 中包含列标签。如果传递字符串列表,那么这些字符串将覆盖现有的列标签。默认情况下,header=True
。
7. index
| boolean
| optional
是否在 csv 中包含行标签。默认情况下,index=True
。
8. index_label
| string
或 sequence
或 False
或 None
| optional
要使用的列标签。默认情况下,index_label=None
。
9. mode
| string
| optional
打开文件的模式。默认情况下, mode="w"
,代表写入模式。
10.encoding
| string
| optional
写入文件时使用的编码。默认情况下,encoding="utf-8"
。
11.compression
| string
或 dict
| optional
要使用的压缩算法。允许的值如下:
"infer" "gzip" "bz2" "zip" "xz"
默认情况下, compression="infer"
,这意味着如果为 path_or_buf
提供了路径,则将从您附加的扩展名推断出压缩算法。例如,如果 path_or_buf
是 "my_data.zip"
,则将使用 "zip"
压缩。如果未提供扩展名,则不会进行压缩。
12.quoting
| optional
默认情况下,quoting=csv.QUOTE_MINIMAL
。
13.quotechar
| string
长度为 1 | optional
当一个值恰好包含分隔符时,该值将被错误地分割。您可以使用 quotechar
包装您的值,以防止发生此类不必要的拆分。默认情况下,'"'
。
14.line_terminator
| string
| optional
用于指示换行符的字符。默认为 os.linesep
。
15.chunksize
| int
或 None
| optional
一次写入的行数。如果您的 DataFrame 很大,则使用较大的块大小(例如 10000
)可能会带来更好的性能。默认情况下,chunksize=None
。
16.date_format
| string
| optional
日期时间对象的格式字符串。
17.doublequote
| boolean
| optional
是否解析 quotechar
。默认情况下,doublequote=True
。
18.escapechar
| string
| optional
用于转义双引号的字符。默认情况下,escapechar=None
。
19.decimal
| string
| optional
表示小数点的字符。默认情况下,decimal="."
。该参数的存在是因为法国等一些欧洲国家使用 ,
来表示小数点。
返回值
如果指定path_or_buf
,则返回None
。否则,返回一个字符串。
例子
将 csv 写入文件
考虑以下 DataFrame :
df = pd.DataFrame({"A":[3,4], "B":[5,6]}, index=["a","b"])
df
A B
a 3 5
b 4 6
要将 df
保存为 CSV 文件:
df.to_csv(path_or_buf="my_data")
输出的文件my_data
与Python脚本位于同一目录,如下:
,A,B
a,3,5
b,4,6
将 csv 写入字符串
考虑以下 DataFrame :
df = pd.DataFrame({"A":[3,4], "B":[5,6]}, index=["a","b"])
df
A B
a 3 5
b 4 6
要将 df
保存为 csv 字符串,请不要指定 path_or_buf
:
df.to_csv()
',A,B\na,3,5\nb,4,6\n'
请注意,打印此内容将使 \n
生效:
print(df.to_csv())
,A,B
a,3,5
b,4,6
指定float_format
考虑以下包含浮点数的DataFrame:
df = pd.DataFrame({"A":[3.00005,4],"B":[5,6]}, index=["a","b"])
df
A B
a 3.00005 5
b 4.00000 6
为了格式化浮点数(例如要包含多少个小数位),我们使用float_format
参数。其语法遵循 Python 标准字符串格式化程序的语法,我们在此详细介绍。
例如,最多包含 3 位小数:
df.to_csv(float_format="%.3f")
',A,B\na,3.000,5\nb,4.000,6\n'
指定列
考虑以下 DataFrame :
df = pd.DataFrame({"A":[3,4], "B":[5,6]}, index=["a","b"])
df
A B
a 3 5
b 4 6
默认情况下,所有列都包含在生成的 csv 中。要仅包含特定列,请指定其列标签,如下所示:
print(df.to_csv(columns=["A"]))
,A
a,3
b,4
指定标题
考虑以下 DataFrame :
df = pd.DataFrame({"A":[3,4],"B":[5,6]}, index=["a","b"])
df
A B
a 3 5
b 4 6
默认情况下, header=True
,这意味着标头包含在生成的 csv 中:
print(df.to_csv()) # header=True
,A,B
a,3,5
b,4,6
要排除标头,请设置header=False
,如下所示:
print(df.to_csv(header=False))
a,3,5
b,4,6
我们还可以传递新列标签的列表,如下所示:
print(df.to_csv(header=["C","D"]))
,C,D
a,3,5
b,4,6
指定index_label
考虑以下 DataFrame :
df = pd.DataFrame({"A":[3,4],"B":[5,6]}, index=["a","b"])
df
A B
a 3 5
b 4 6
默认情况下, index_label=None
,这意味着将包含一个空索引标签:
print(df.to_csv())
,A,B
a,3,5
b,4,6
请注意我们在这里如何以逗号开头 - 索引标签为空,但它仍然包含在内。
要删除索引名称,请设置index_label=False
,如下所示:
print(df.to_csv(index_label=False))
A,B
a,3,5
b,4,6
某些统计软件(例如 R)可能会发现这种格式更易于解析。
指定引号字符
考虑以下 DataFrame :
df = pd.DataFrame({"A":["3,9",4], "B":[5,6]}, index=["a","b"])
df
A B
a 3,9 5
b 4 6
在这里,请注意我们的值之一是 "3,9"
,不幸的是它包含默认分隔符 ,
。如果我们将其转换为 csv,我们最终会在第一行中得到 3,9,5
,这是不正确的,因为它表明我们在这一行中有 3 个值而不是 2 个。
为了表明 3,9
是一个单一值,to_csv(~)
方法默认用引号 ( "
) 括起来:
df.to_csv(sep=",")
',A,B\na,"3,9",5\nb,4,6\n'
请注意我们现在有"3,9"
。
我们可以通过传入 quotechar
来指定单个字符作为包装器,而不是 "
,如下所示:
df.to_csv(quotechar="@")
',A,B\na,@3,9@,5\nb,4,6\n'
指定line_terminator
考虑以下 DataFrame :
df = pd.DataFrame({"A":[3,4], "B":[5,6]}, index=["a","b"])
df
A B
a 3 5
b 4 6
默认情况下,每行使用换行符 ( \n
) 进行分割:
df.to_csv()
',A,B\na,3,5\nb,4,6\n'
我们可以通过传入 line_terminator
使用自定义字符来分割行:
df.to_csv(line_terminator="@")
',A,B@a,3,5@b,4,6@'
指定双引号和转义字符
考虑以下 DataFrame :
df = pd.DataFrame({"A":['3"9',4],"B":[5,6]}, index=["a","b"])
df
A B
a 3"9 5
b 4 6
请注意 df
如何包含带有单双引号 "
的值。
默认情况下, doublequote=True
,这意味着 quotechar
是重复的,如下所示:
print(df.to_csv())
,A,B
a,"3""9",5
b,4,6
在此,请注意以下事项:
-
最初的输出是
"3"9"
,其中外部的""
表明该值是一个字符串。 -
这里的问题是,该值实际上包含
"
,因此这会导致语法错误,因为"3"9"
不是有效的字符串。 -
为了克服这个问题,该方法使用
quotechar
转义中间的"
,默认情况下(令人困惑的是)"
。 -
结果,我们最终得到了 peculiar-looking
"3""9"
。
我们可以通过设置 doublequote=False
来关闭字符串包装在 ""
中的行为,然后提供 escapechar
参数:
print(df.to_csv(doublequote=False, escapechar="@"))
,A,B
a,3@"9,5
b,4,6
此处,需要 escapechar
,因为单独的 "39
是无效语法 - "
表示字符串的开头,并且没有结束 "
。 escapechar
的作用是表明"
与字符串完全无关。
相关用法
- Python Pandas DataFrame to_period方法用法及代码示例
- Python Pandas DataFrame to_json方法用法及代码示例
- Python Pandas DataFrame to_timestamp方法用法及代码示例
- Python Pandas DataFrame to_numpy方法用法及代码示例
- Python Pandas DataFrame to_dict方法用法及代码示例
- Python PySpark DataFrame toDF方法用法及代码示例
- Python PySpark DataFrame toJSON方法用法及代码示例
- Python PySpark DataFrame toPandas方法用法及代码示例
- Python Pandas DataFrame tz_convert方法用法及代码示例
- Python Pandas DataFrame tail方法用法及代码示例
- Python Pandas DataFrame transform方法用法及代码示例
- Python Pandas DataFrame truncate方法用法及代码示例
- Python Pandas DataFrame tz_localize方法用法及代码示例
- Python Pandas DataFrame truediv方法用法及代码示例
- Python Pandas DataFrame transpose方法用法及代码示例
- Python Pandas DataFrame tshift方法用法及代码示例
- Python Pandas DataFrame take方法用法及代码示例
- Python PySpark DataFrame tail方法用法及代码示例
- Python PySpark DataFrame transform方法用法及代码示例
- Python PySpark DataFrame take方法用法及代码示例
- Python Pandas DataFrame empty属性用法及代码示例
- Python Pandas DataFrame pop方法用法及代码示例
- Python Pandas DataFrame nsmallest方法用法及代码示例
- Python Pandas DataFrame sample方法用法及代码示例
- Python Pandas DataFrame items方法用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | to_csv method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。