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.LZMAFile或tarfile.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。更多详情请参阅fsspec和urllib,有关存储选项的更多示例,请参阅 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.StataWriterStata 数据文件的低级写入器。
io.stata.StataWriter117117 版本文件的低级写入器。
Examples
>>> df = pd.DataFrame({'animal': ['falcon', 'parrot', 'falcon', ... 'parrot'], ... 'speed': [350, 18, 361, 15]}) >>> df.to_stata('animals.dta')