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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
