Pandas to_csv() - 将 DataFrame 转换为 CSV

Pandas DataFrame to_csv() 函数将 DataFrame 转换为 CSV 数据。我们可以传递一个文件对象来将 CSV 数据写入文件中。否则,CSV 数据将以字符串格式返回。

Pandas DataFrame to_csv() 语法

DataFrame to_csv() 函数的语法是:

def to_csv(
    self,
    path_or_buf=None,
    sep=",",
    na_rep="",
    float_format=None,
    columns=None,
    header=True,
    index=True,
    index_label=None,
    mode="w",
    encoding=None,
    compression="infer",
    quoting=None,
    quotechar='"',
    line_terminator=None,
    chunksize=None,
    date_format=None,
    doublequote=True,
    escapechar=None,
    decimal=".",
)

一些重要的参数包括:

  • path_or_buf: 用于写入 CSV 数据的文件对象。如果未提供此参数,则 CSV 数据将以字符串形式返回。
  • sep: CSV 数据的分隔符。它应该是一个长度为 1 的字符串,默认为逗号。
  • na_rep: 表示空值或缺失值的字符串,默认为空字符串。
  • columns: 用于指定要包含在 CSV 输出中的列的序列。
  • header: 允许的值为布尔值或字符串列表,默认为 True。如果为 False,则不会在输出中写入列名。如果是字符串列表,则用于写入列名。字符串列表的长度应与写入 CSV 文件中的列数相同。
  • index: 如果为 True,则索引包含在 CSV 数据中。如果为 False,则索引值不会写入 CSV 输出。
  • index_label: 用于指定索引的列名。

Pandas DataFrame 转换为 CSV 示例

让我们看一些使用 to_csv() 函数将 DataFrame 转换为 CSV 数据的常见示例。

1. 将 DataFrame 转换为 CSV 字符串

import pandas as pd

d1 = {'Name': ['Pankaj', 'Meghna'], 'ID': [1, 2], 'Role': ['CEO', 'CTO']}

df = pd.DataFrame(d1)

print('DataFrame:\n', df)

# 默认 CSV
csv_data = df.to_csv()
print('\nCSV String:\n', csv_data)

输出:

DataFrame:
      Name  ID Role
0  Pankaj   1  CEO
1  Meghna   2  CTO

CSV String:
 ,Name,ID,Role
0,Pankaj,1,CEO
1,Meghna,2,CTO

2. 指定 CSV 输出的分隔符

csv_data = df.to_csv(sep='|')
print(csv_data)

输出:

|Name|ID|Role
0|Pankaj|1|CEO
1|Meghna|2|CTO

如果指定的分隔符长度不是 1,则会引发 TypeError: “delimiter” must be a 1-character string

3. 仅选择部分列进行 CSV 输出

csv_data = df.to_csv(columns=['Name', 'ID'])
print(csv_data)

输出:

,Name,ID
0,Pankaj,1
1,Meghna,2

请注意,索引不被视为有效列。

4. 在 CSV 输出中忽略标题行

csv_data = df.to_csv(header=False)
print(csv_data)

输出:

0,Pankaj,1,CEO
1,Meghna,2,CTO

5. 在 CSV 中设置自定义列名

csv_data = df.to_csv(header=['NAME', 'ID', 'ROLE'])
print(csv_data)

输出:

,NAME,ID,ROLE
0,Pankaj,1,CEO
1,Meghna,2,CTO

同样,索引不被视为 DataFrame 对象的列。

6. 在 CSV 输出中跳过索引列

csv_data = df.to_csv(index=False)
print(csv_data)

输出:

Name,ID,Role
Pankaj,1,CEO
Meghna,2,CTO

7. 在 CSV 中设置索引列名

csv_data = df.to_csv(index_label='Sl No.')
print(csv_data)

输出:

Sl No.,Name,ID,Role
0,Pankaj,1,CEO
1,Meghna,2,CTO

8. 将 DataFrame 转换为 CSV 文件

with open('csv_data.txt', 'w') as csv_file:
    df.to_csv(path_or_buf=csv_file)

我们使用 with 语句打开文件,它会在 with 语句块执行完成时关闭文件。此代码片段将创建一个包含以下数据的 CSV 文件。!Pandas DataFrame To Csv File

9. CSV 输出中的空值表示

import pandas as pd

d1 = {'Name': ['Pankaj', 'Meghna'], 'ID': [1, pd.NaT], 'Role': [pd.NaT, 'CTO']}
df = pd.DataFrame(d1)
print('DataFrame:\n', df)

csv_data = df.to_csv()
print('\nCSV String:\n', csv_data)

csv_data = df.to_csv(na_rep="None")
print('CSV String with Null Data Representation:\n', csv_data)

输出:

DataFrame:
      Name   ID Role
0  Pankaj    1  NaT
1  Meghna  NaT  CTO

CSV String:
 ,Name,ID,Role
0,Pankaj,1,
1,Meghna,,CTO

CSV String with Null Data Representation:
 ,Name,ID,Role
0,Pankaj,1,None
1,Meghna,None,CTO
  • 33
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
可以使用pandas的to_csv()方法将DataFrame保存为csv文件。例如,使用以下代码将DataFrame保存为csv文件: ```python import pandas as pd df = pd.read_csv('./data/34/sample_pandas_normal.csv', index_col=0) df.to_csv('./data/34/to_csv_out.csv') ``` 这将把DataFrame保存为名为to_csv_out.csv的文件。如果你想将数据追加到现有的csv文件中,可以使用mode='a'参数。例如: ```python df.to_csv('./data/34/to_csv_out.csv', mode='a', header=False) ``` 这将把数据追加到to_csv_out.csv文件中,而不会添加新的列名。 如果你想指定整数或浮点数列的格式,可以先将DataFrame中的列转换为字符串格式,然后再保存为csv文件。例如: ```python df\['col1'\] = df\['col1'\].map('{:.3f}'.format) df\['col2'\] = df\['col2'\].map('{:.3e}'.format) df\['col3'\] = df\['col3'\].map('{:#010x}'.format) df.to_csv('./data/34/to_csv_out_float_format_str.csv') ``` 这将把DataFrame中的col1列保留3位小数,col2列使用科学计数法表示,col3列以十六进制格式保存。 请注意,保存后的列类型将变为object。你可以使用df.dtypes来检查列的数据类型。 \[1\] \[2\] \[3\] #### 引用[.reference_title] - *1* *2* *3* [34_PandasCSV文件内容的导出和添加(to_csv)](https://blog.csdn.net/qq_18351157/article/details/113520345)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张无忌打怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值