将 pandas df 导出到 SAS xpt(xport 模块):日期转换为字符串

export pandas df to SAS xpt (xport module): date converted to string

编辑 2021 年 9 月 27 日 19:20

如果我将长度更改为:

没看懂...


编辑 2021 年 9 月 27 日 18:30

我认为问题可能出在日期格式上,对于 SAS,日期格式应该是自 1960 年以来的天数 所以我已经像这样转换了我的日期,并将数据集的格式更改为 ddmmyy10.

但是现在,我可以打开 xpt 文件,但是当我想查看数据时,出现错误:


我想从 Pandas 数据帧生成 xpt 文件(SAS 传输格式),但不了解 xport.v56.dump 函数的工作原理。

Dataframe 可能包含整数、浮点数、字符串和 date/datetime 但似乎 xpt 库数据集只有字符或数字而不是 Date/Datetime。

如果我尝试使用日期时间 xport 字段,我收到错误 Could not coerce column {column!r} to {dtype}...

例如上面的变量#17和#18应该是datetime

是否可以使用 ddmmyy10 定义类型 'Datetime'。 SAS 格式?

也许我对 xpt 文件格式有什么误解?

If I change Length to 7 or 8 it works but not with >=9

这是你的问题!在 SAS 中,数字变量的长度是用于存储数字的 字节 的数量。 SAS 中的所有数字都是 8 字节数字;您不能存储超过 8 个字节的数字。你可以少用,但不应该。

数字变量中的长度不是显示宽度,它是在格式中控制的。在字符变量中,在单字节字符集中,它确实重叠(它们是相同的,长度和显示宽度,大部分),因此常见的混淆。