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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。