当熊猫读取read_sql字节列时会出现问题。如果您通过DBeaver查看sql,那么字节列显示的不同,但如果您通过read_sql查看它,就会发现熊猫将值转换为十六进制。
例如,熊猫显示列值-
b'\x80\xbc\x10`K\xa8\x95\xd8\x11\xe5K\xf9\xe7\xd7\x8cq'我需要-
0x80BC10604BA895D811E54BF9E7D78C71如果我在sql中使用
CONVERT(varchar(max),guid,1)熊猫给予正确的价值观。但是我需要转换python中的列,而不是sql中的列。
发布于 2022-11-30 18:59:17
它看起来像列(我在下面称为'col' )包含字节。有一个.hex()方法,您可以映射到列中的每个项,以将它们转换为十六进制字符串。
df['col'] = df['col'].map(lambda e: e.hex())这会产生
80bc10604ba895d811e54bf9e7d78c71似乎您想要的具体输出是具有"0x“前缀,并为9以上的数字设置大写字母,这可以通过在十六进制字符串上调用.upper()并在'0x‘前面加上’0x‘来实现。
df['col'] = df['col'].map(lambda e: '0x' + e.hex().upper())这会产生
0x80BC10604BA895D811E54BF9E7D78C71https://stackoverflow.com/questions/74628652
复制相似问题