我试图理解为什么当我们使用熊猫to_csv()时,一个数字3189069486778499被输出为“0.x103189069486778499”。这是唯一发生在大量数据中的案例。在使用to_csv()时,我们已经使用了encoding='utf8',通常这会解决一些unicode问题.
所以,,我试着理解什么是"\x10",这样我就可以知道为什么.由于整个过程在luigi管道中运行,有时luigi会产生奇怪的输出。我在IPython试过同样的东西,同样版本的熊猫,一切都很好.
发布于 2019-10-08 01:50:39
因为这是可能的答案,即使你的问题中没有提供细节:
很有可能,管道中的某些内容是有意生成带有长度前缀文本的字段,而不是原始的非结构化文本。\x103189069486778499是一个值为16 (0x10)的二进制字节,后面紧跟着16个字符。之前的0.可能来自以前的输出,或者它使用的任何自定义数据序列化格式的其他部分。
这种设计通常是为了提高解析的效率;如果在字段之间使用分隔符字符(例如,逗号,如CSV),则在实际数据中出现分隔符时,您会想出转义或引号的方法,解析器必须逐个字符地扫描,以确定字段的开始和结束位置。使用长度前缀文本,解析器将找到字段长度,并确切知道要读取多少字符才能读取字段,或者跳过多少字符以查找下一个字段,而不需要引用或转义,无论字段包含什么。
至于在做什么:您必须检查管道中的命令。您的问题没有提供有意义的方法来确定这个问题的原因。
https://stackoverflow.com/questions/58279018
复制相似问题