将 pandas df 导出到 SAS xpt(xport 模块):日期转换为字符串
export pandas df to SAS xpt (xport module): date converted to string
编辑 2021 年 9 月 27 日 19:20
如果我将长度更改为:
- 1 : return D
- 2:return2020 年 12 月 23 日
- 3-8:return 2021 年 4 月 9 日(预计)
- 大于 9 : 引发错误
没看懂...
编辑 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 个字节的数字。你可以少用,但不应该。
数字变量中的长度不是显示宽度,它是在格式中控制的。在字符变量中,在单字节字符集中,它确实重叠(它们是相同的,长度和显示宽度,大部分),因此常见的混淆。
编辑 2021 年 9 月 27 日 19:20
如果我将长度更改为:
- 1 : return D
- 2:return2020 年 12 月 23 日
- 3-8:return 2021 年 4 月 9 日(预计)
- 大于 9 : 引发错误
没看懂...
编辑 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 个字节的数字。你可以少用,但不应该。
数字变量中的长度不是显示宽度,它是在格式中控制的。在字符变量中,在单字节字符集中,它确实重叠(它们是相同的,长度和显示宽度,大部分),因此常见的混淆。