python - 尝试使用 python 将 kdb 转换为 csv,除一列外,所有内容都正确转换
问题描述
我已将 kdb 查询转换为数据框,然后将该数据框上传到 csv 文件。这导致了一个编码错误,我很容易通过解码为 utf-8 来修复它。但是,有一个列这不起作用。
“nameFid”是无法正常工作的列,它在 CSV 文件中输出为“b'STRING”
我正在运行 Python 3.7,我很乐意提供所需的任何其他信息。
这是我的代码,它对我从 kdb 获得的数据帧中的数据进行解码
for ba in df.dtypes.keys():
if df.dtypes[ba] == 'O':
try:
df[ba] = df[ba].apply(lambda x: x.decode('UTF-8'))
except Exception as e:
print(e)
return df
这适用于除“nameFid”之外的每一列
UnicodeDecodeError:“utf-8”编解码器无法解码位置 6 中的字节 0xdc:无效的继续字节 -
这是我得到的一个错误,但我认为这表明数据没有使用 UTF-8 编码,这肯定意味着所有列都不起作用?
当使用 try except 时,它会打印“'Series' object has no attribute 'decode'”。
我的目标是从当前显示的列值中删除“b”
" b'字符串' "
我不确定我还需要添加什么。如果你需要帮助,请告诉我。
也很抱歉,我对这一切都很陌生。
解决方案
许多编码彼此部分兼容。这主要是由于 ASCII 的流行,所以它们中的很多将向后兼容 ASCII,但扩展方式不同。因此,如果您的其他列仅包含数字等内容,则它们可能仅限 ASCII,并且可以使用许多不同的编码。
然而,引发错误的列包含一些超出正常 ASCII 范围的字符,因此编码开始变得重要。如果您不知道文件的编码,您可以chardet
尝试猜测它。请记住,这只是猜测。使用不同的编码进行解码可能不会引发任何错误,但可能会导致最终文本中出现错误的字符,因此您应该始终知道要使用哪种编码。
这就是说,如果您在 Linux 上,标准file
实用程序通常能够让您粗略猜测所使用的编码,但是对于更高级的用例,例如 chardet 是必要的。
一旦你找到了正确的编码,就说你发现它latin-1
只是decode('utf-8')
用decode('latin-1')
.
推荐阅读
- python - 如何为 Binance 创建多符号和多时间框架脚本?
- reactjs - 为什么在项目中导入 tensorflow js 时会出错
- oracle - 未找到 ID #30652927657716240 的授权 - 返回 true
- r - 高效的递归随机抽样
- javascript - 快速服务器的套接字 IO 无效帧
- flutter - 如何在颤动中减小应用栏的大小
- c - 使用随机函数生成 10x10 矩阵:如何循环新的一组数字、列和行的总和
- angular - NG2-Charts 仅在刷新页面后显示
- haskell - 为什么类型类覆盖条件在 Haskell 而不是 PureScript 中失败
- lua - Lua:如何从数组中获取随机元素?