Pandas to_csv()–将DataFrame转换为CSV

时间:2020-02-23 14:42:09  来源:igfitidea点击:

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输出中的列。

  • 标头:允许的值为布尔值或者字符串列表,默认值为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': ['hyman', 'Meghna'], 'ID': [1, 2], 'Role': ['CEO', 'CTO']}

df = pd.DataFrame(d1)

print('DataFrame:\n', df)

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

输出:

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

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

2.为CSV输出指定定界符

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

输出:

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

如果指定的定界符长度不为1,则TypeError:" delimiter"必须为1个字符的字符串。

3.仅选择几列用于CSV输出

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

输出:

,Name,ID
0,hyman,1
1,Meghna,2

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

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

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

输出:

0,hyman,1,CEO
1,Meghna,2,CTO

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

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

输出:

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

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

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

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

输出:

Name,ID,Role
hyman,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,hyman,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文件。

9. CSV输出中为空,不存在或者缺少数据表示

import pandas as pd

d1 = {'Name': ['hyman', '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  hyman    1  NaT
1  Meghna  NaT  CTO

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

CSV String with Null Data Representation:
 ,Name,ID,Role
0,hyman,1,None
1,Meghna,None,CTO