Pandas DataFrame to_csv() 函数将 DataFrame 转换为 CSV 数据. 我们可以传输文件对象以将 CSV 数据写入文件.否则,CSV 数据将以字符串格式返回。
Pandas 数据框 to_csv() 语法
DataFrame to_csv() 函数的语法是:
1def to_csv(
2 self,
3 path_or_buf=None,
4 sep=",",
5 na_rep="",
6 float_format=None,
7 columns=None,
8 header=True,
9 index=True,
10 index_label=None,
11 mode="w",
12 encoding=None,
13 compression="infer",
14 quoting=None,
15 quotechar='"',
16 line_terminator=None,
17 chunksize=None,
18 date_format=None,
19 doublequote=True,
20 escapechar=None,
21 decimal=".",
22)
一些重要的参数是:
若不提供此参数,则 CSV 数据返回为字符串
- sep:对 CSV 数据的界限。它应该是长度 1 的字符串,默认的字符串是 comma
- na_rep:字符串代表 null 或缺少值,默认的字符串是空字符串
- columns:一个序列来指定要在 CSV 输出中包含的列 header:允许的值是 boolean 或字符串列表,默认的字符串是 True。如果错误,字符串名不在输出中。如果字符串列表被用来编写字符串名,则字符串
Pandas DataFrame 到 CSV 示例
让我们看看使用 to_csv() 函数将 DataFrame 转换为 CSV 数据的一些常见例子。
转换DataFrame 到 CSV 字符串
1import pandas as pd
2
3d1 = {'Name': ['Pankaj', 'Meghna'], 'ID': [1, 2], 'Role': ['CEO', 'CTO']}
4
5df = pd.DataFrame(d1)
6
7print('DataFrame:\n', df)
8
9# default CSV
10csv_data = df.to_csv()
11print('\nCSV String:\n', csv_data)
输出:
1DataFrame:
2 Name ID Role
30 Pankaj 1 CEO
41 Meghna 2 CTO
5
6CSV String:
7 ,Name,ID,Role
80,Pankaj,1,CEO
91,Meghna,2,CTO
2. 指定 CSV 输出的界限
1csv_data = df.to_csv(sep='|')
2print(csv_data)
输出:
1|Name|ID|Role
20|Pankaj|1|CEO
31|Meghna|2|CTO
如果指定的分界器长度不为1, TypeError:分界器
必须是1个字符的字符串。
仅为 CSV 输出选择少量列
1csv_data = df.to_csv(columns=['Name', 'ID'])
2print(csv_data)
输出:
1,Name,ID
20,Pankaj,1
31,Meghna,2
请注意,该索引不被视为有效的列。
忽略 CSV 输出中的 Header 行
1csv_data = df.to_csv(header=False)
2print(csv_data)
输出:
10,Pankaj,1,CEO
21,Meghna,2,CTO
5. 在 CSV 中设置自定义列名称
1csv_data = df.to_csv(header=['NAME', 'ID', 'ROLE'])
2print(csv_data)
输出:
1,NAME,ID,ROLE
20,Pankaj,1,CEO
31,Meghna,2,CTO
再次,索引不被视为 DataFrame 对象的列。
跳过 CSV 输出中的索引列
1csv_data = df.to_csv(index=False)
2print(csv_data)
输出:
1Name,ID,Role
2Pankaj,1,CEO
3Meghna,2,CTO
设置 CSV 中的索引列名称
1csv_data = df.to_csv(index_label='Sl No.')
2print(csv_data)
输出:
1Sl No.,Name,ID,Role
20,Pankaj,1,CEO
31,Meghna,2,CTO
转换 DataFrame 到 CSV 文件
1with open('csv_data.txt', 'w') as csv_file:
2 df.to_csv(path_or_buf=csv_file)
We are using with statement to open the file, it takes care of closing the file when the with statement block execution is finished. This code snippet will create a CSV file with the following data.
9. CSV 输出中的 Null、NA 或缺失数据代表性
1import pandas as pd
2
3d1 = {'Name': ['Pankaj', 'Meghna'], 'ID': [1, pd.NaT], 'Role': [pd.NaT, 'CTO']}
4df = pd.DataFrame(d1)
5print('DataFrame:\n', df)
6
7csv_data = df.to_csv()
8print('\nCSV String:\n', csv_data)
9
10csv_data = df.to_csv(na_rep="None")
11print('CSV String with Null Data Representation:\n', csv_data)
输出:
1DataFrame:
2 Name ID Role
30 Pankaj 1 NaT
41 Meghna NaT CTO
5
6CSV String:
7 ,Name,ID,Role
80,Pankaj,1,
91,Meghna,,CTO
10
11CSV String with Null Data Representation:
12 ,Name,ID,Role
130,Pankaj,1,None
141,Meghna,None,CTO