📜  Pandas DataFrame转换为CSV

📅  最后修改于: 2020-10-29 02:54:41             🧑  作者: Mango

将Pandas DataFrame转换为CSV

Pandas 的to_csv()函数用于将DataFrame转换为CSV数据。要将CSV数据写入文件,我们只需将文件对象传递给函数。否则,CSV数据以字符串格式返回。

句法:

DataFrame.to_csv(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:它指向str或文件句柄。基本上,它定义了文件或对象的路径。默认值为None,如果传递了None值,则返回字符串值。

如果我们传递文件对象,则应使用newline =“将其打开,并禁用通用换行符。

sep:表示一个字符串值,由长度为1的字符串组成。默认值为comma(,)。

na_rep:它是指表示空值或缺失值的字符串值。空字符串是默认值。

float_format:它还包含一个字符串值,该字符串值负责格式化浮点数的字符串。

columns:这是一个可选参数,它引用一个序列来指定需要包含在CSV输出中的列。

header:通常包含布尔值或字符串列表。如果其值设置为False,则列名称不会写入输出中。它的默认值为True。

如果我们将字符串列表作为输入传递,则通常会将列名称写入输出中。文件列表的长度应与CSV文件中写入的列数相同。

index:如果将该值设置为True,则CSV数据中将包含索引。否则,索引值不会写入CSV输出中。

index_label:它包含一个str值或一个序列,用于指定索引的列名。默认值为“无”。

mode:它是指用于写入模式的字符串值。默认值为w。

encoding:这是一个可选参数,由字符串值组成,该字符串值表示输出文件中使用的编码。编码的默认值为UTF-8。

compression:它是一个str值,用于压缩以下值{‘infer’,’gzip’,’bz2’,’zip’,’xz’,无}中的模式。如果infer并且path_or_buf与路径类似,它将从以下扩展名中检测压缩:’.gz’,’。bz2’,’。zip’或’.xz’,否则不会发生压缩。

quoting:这是一个可选参数,在csv模块中定义为常量。其默认值为csv.QUOTE_MINIMAL。如果设置了float_format,则将浮点值转换为字符串,并将csv.QUOTE_NONNUMERIC视为非数字值。

quotechar:它是指长度为1的str值。它是用于引用字段的字符。

line_terminator:这是一个可选参数,它引用一个字符串值。它的主要任务是终止线路。这是一个字符是在输出文件中使用。其默认值设置为os.linesep,主要取决于操作系统。调用一个单独的方法来定义操作系统(对于Linux为’n’,对于’Windows’为’rn’)。

chunksize:由None或整数值组成,并定义当前要写入的行。

date_format:它包含str值,用于格式化datetime对象的字符串。 date_format的默认值为“无”。

doublequote:它包含一个布尔值,其默认值为True。它主要用于控制字段内quotechar的报价。

escapechar:它由长度为1的字符串值基本上,它是用于转义SEP和quotechar一个字符。 escapechar的默认值为“无”。

decimal:它由一个字符串值组成,该值将一个字符标识为十进制分隔符。例如:对欧洲数据使用’,’。

返回值:

它返回str或None值。如果名为path_or_buf的参数值是None,它将返回结果的csv格式为字符串。否则,它返回None。

示例1:下面的示例将DataFrame转换为CSV字符串:

import pandas as pd
data = {'Name': ['Smith', 'Parker'], 'ID': [101, 102], 'Language': ['Python', 'JavaScript']}
info = pd.DataFrame(data)
print('DataFrame Values:\n', info)
# default CSV
csv_data = info.to_csv()
print('\nCSV String Values:\n', csv_data)

输出:

DataFrame Values:
     Name   ID    Language
0   Smith  101      Python
1  Parker  102  JavaScript

CSV String Values:
     ,Name,ID,Language
0   ,Smith,101,Python
1   ,Parker,102,JavaScript

示例2:以下示例显示了CSV输出文件中的数据表示形式为空或丢失:

例:

import pandas as pd
data = {'Name': ['Smith', 'Parker'], 'ID': [101, pd.NaT], 'Language': [pd.NaT, 'JavaScript']}
info = pd.DataFrame(data)
print('DataFrame Values:\n', info)
csv_data = info.to_csv()
print('\nCSV String Values:\n', csv_data)
csv_data = info.to_csv(na_rep="None")
print('CSV String with Null Data Values:\n', csv_data)

输出:

DataFrame Values:
      Name   ID    Language
0   Smith  101         NaT
1  Parker  NaT  JavaScript

CSV String Values:
 ,Name,ID,Language
0,Smith,101,
1,Parker,,JavaScript

CSV String with Null Data Values:
  ,Name,ID,Language
0,Smith,101,None
1,Parker,None,JavaScript

示例3:下面的示例指定CSV输出的分隔符。

import pandas as pd
data = {'Name': ['Smith', 'Parker'], 'ID': [101, pd.NaT], 'Language': [Python, 'JavaScript']}
info = pd.DataFrame(data)
print('DataFrame:\n', info)
csv_data = info.to_csv(sep='|')
print(csv_data)

输出:

DataFrame:
      Name   ID    Language
0   Smith  101    Python
1  Parker  NaT  JavaScript
  |Name|ID|Language
0|Smith|101|Python
1|Parker||JavaScript