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