pandas.DataFrame.to_stata#

DataFrame.to_stata(path, *, convert_dates=None, write_index=True, byteorder=None, time_stamp=None, data_label=None, variable_labels=None, version=114, convert_strl=None, compression='infer', storage_options=None, value_labels=None)[源代码]#

将 DataFrame 对象导出为 Stata dta 格式。

将 DataFrame 写入 Stata 数据集文件。“dta” 文件包含 Stata 数据集。

Parameters:
pathstr,path object,或 buffer

字符串、路径对象(实现 os.PathLike[str])或实现二进制 write() 函数的类文件对象。

convert_datesdict

将包含日期时间类型的列映射到写入日期时要使用的 Stata 内部格式的字典。选项有 ‘tc’、’td’、’tm’、’tw’、’th’、’tq’、’ty’。列可以是整数或名称。未指定转换类型的日期时间列将转换为 ‘tc’。如果日期时间列包含时区信息,则引发 NotImplementedError。

write_indexbool

将索引写入 Stata 数据集。

byteorderstr

可以是 “>”、”<”、”little” 或 “big”。默认为 sys.byteorder

time_stampdatetime

用于作为文件创建日期的日期时间。默认是当前时间。

data_labelbool, default False

数据集的标签。必须小于等于 80 个字符。

variable_labelsdict

包含列名作为键和变量标签作为值的字典。每个标签必须小于等于 80 个字符。

version{114, 117, 118, 119, None},默认为 114

将在输出 dta 文件中使用的版本。如果设为 None,pandas 将根据帧中的列数在 118 或 119 格式之间进行选择。Stata 10 及更高版本可以读取 114 版本。Stata 13 及更高版本可以读取 117 版本。Stata 14 及更高版本支持 118 版本。Stata 15 及更高版本支持 119 版本。114 版本将字符串变量限制为最多 244 个字符,而 117 版本及更高版本允许字符串长度最多为 2,000,000 个字符。118 和 119 版本支持 Unicode 字符,119 版本支持超过 32,767 个变量。

通常,只有当变量数量超过 dta 格式 118 的容量时,才应使用 119 版本。以 119 格式导出较小的数据集可能会产生意外后果,并且截至 2020 年 11 月,Stata SE 无法读取 119 版本文件。

convert_strllist,optional

将列名转换为 Stata StrL 格式的字符串列的列表。仅当版本为 117 时可用。如果字符串长度超过 8 个字符且值重复,则以 StrL 格式存储字符串可以生成更小的 dta 文件。

compressionstr or dict, default ‘infer’

用于输出数据的实时压缩。如果为 ‘infer’ 且 ‘path’ 是类路径,则从以下扩展名检测压缩:’.gz’、’.bz2’、’.zip’、’.xz’、’.zst’、’.tar’、’.tar.gz’、’.tar.xz’ 或 ‘.tar.bz2’(否则不压缩)。设置为 None 表示不压缩。也可以是一个字典,其中键 'method' 设置为 {'zip', 'gzip', 'bz2', 'zstd', 'xz', 'tar'} 中的一个,并且其他键值对将被转发到 zipfile.ZipFile, gzip.GzipFile, bz2.BZ2File, zstandard.ZstdCompressor, lzma.LZMAFiletarfile.TarFile。例如,以下内容可以用于更快的压缩和创建可重现的 gzip 存档:compression={'method': 'gzip', 'compresslevel': 1, 'mtime': 1}

在 1.5.0 版本加入: 增加了对 .tar 文件的支持。

在 1.4.0 版本发生变更: Zstandard 支持。

storage_optionsdict, 可选

适用于特定存储连接的额外选项,例如主机、端口、用户名、密码等。对于 HTTP(S) URL,键值对将作为标头选项转发给 urllib.request.Request。对于其他 URL(例如,以 “s3://”, 和 “gcs://” 开头的 URL),键值对将转发给 fsspec.open。更多详情请参阅 fsspecurllib,有关存储选项的更多示例,请参阅 here

value_labelsdict of dicts

包含列名作为键和列值到标签的字典作为值的字典。单个变量的标签必须小于等于 32,000 个字符。

在 1.4.0 版本加入.

Raises:
NotImplementedError
  • 如果日期时间包含时区信息

  • 列 dtype 在 Stata 中无法表示

ValueError
  • convert_dates 中列出的列既不是 datetime64[ns] 也不是 datetime.datetime

  • convert_dates 中列出的列不在 DataFrame 中

  • 类别标签包含的字符数超过 32,000 个

参见

read_stata

导入 Stata 数据文件。

io.stata.StataWriter

Stata 数据文件的低级写入器。

io.stata.StataWriter117

117 版本文件的低级写入器。

Examples

>>> df = pd.DataFrame({'animal': ['falcon', 'parrot', 'falcon',
...                               'parrot'],
...                    'speed': [350, 18, 361, 15]})
>>> df.to_stata('animals.dta')