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 数据集。

参数:
pathstr, path object, or buffer

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

convert_datesdict

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

write_indexbool

将索引写入 Stata 数据集。

byteorderstr

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

time_stampdatetime

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

data_labelstr, optional

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

variable_labelsdict

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

version{{114, 117, 118, 119, None}}, default 114

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

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

convert_strllist, optional

要转换为 Stata StrL 格式的字符串列的列名列表。仅当版本为 117 时可用。将字符串存储在 StrL 格式中,如果字符串长度超过 8 个字符且值重复,可以生成更小尺寸的 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.ZipFilegzip.GzipFilebz2.BZ2Filezstandard.ZstdCompressorlzma.LZMAFiletarfile.TarFile。例如,可以传递以下参数以实现更快的压缩并创建可重现的 gzip 存档:compression={'method': 'gzip', 'compresslevel': 1, 'mtime': 1}

storage_optionsdict, optional

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

value_labelsdict of dicts

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

引发:
NotImplementedError
  • 如果 datetime 包含时区信息

  • 列 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 文件的低级写入器。

示例

>>> df = pd.DataFrame(
...     [["falcon", 350], ["parrot", 18]], columns=["animal", "parrot"]
... )
>>> df.to_stata("animals.dta")