尝试使用 python 将 kdb 转换为 csv,除一列外,所有内容均正确转换
Trying to convert kdb to csv using python, everything converts correctly except one column
我已将 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' codec can't decode byte 0xdc in position 6: invalid continuation byte -
这是我遇到的一个错误,但我认为这表明数据未使用 UTF-8 编码,这肯定意味着所有列都不起作用?
当使用 try except 时,它会打印“'Series' 对象没有属性 'decode'”。
我的目标是从当前显示
的列值中删除 "b''"
" b'STRING' "
我不确定我还需要添加什么。如果您需要什么,请告诉我。
也很抱歉,我对这一切都很陌生。
许多编码彼此部分兼容。这主要是由于 ASCII 的流行,所以它们中的大量将向后兼容 ASCII,但以不同的方式扩展它。因此,如果您的其他列仅包含数字等内容,则它们可能仅包含 ASCII,并且可以使用许多不同的编码。
引发错误的列包含一些超出正常 ASCII 范围的字符,因此编码开始变得重要。如果您不知道文件的编码,您可以使用 chardet
来尝试猜测它。请记住,这只是 猜测。使用不同的编码解码可能不会引发任何错误,但它可能会导致最终文本中出现错误的字符,因此您应该始终知道要使用哪种编码。
这就是说,如果您使用 Linux,标准 file
实用程序通常能够让您粗略猜测所使用的编码,但是对于更高级的用例,需要像 chardet 这样的东西.
找到正确的编码后,假设您发现它是 latin-1
,只需将 decode('utf-8')
替换为 decode('latin-1')
。
我已将 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' codec can't decode byte 0xdc in position 6: invalid continuation byte -
这是我遇到的一个错误,但我认为这表明数据未使用 UTF-8 编码,这肯定意味着所有列都不起作用?
当使用 try except 时,它会打印“'Series' 对象没有属性 'decode'”。
我的目标是从当前显示
的列值中删除 "b''"" b'STRING' "
我不确定我还需要添加什么。如果您需要什么,请告诉我。
也很抱歉,我对这一切都很陌生。
许多编码彼此部分兼容。这主要是由于 ASCII 的流行,所以它们中的大量将向后兼容 ASCII,但以不同的方式扩展它。因此,如果您的其他列仅包含数字等内容,则它们可能仅包含 ASCII,并且可以使用许多不同的编码。
引发错误的列包含一些超出正常 ASCII 范围的字符,因此编码开始变得重要。如果您不知道文件的编码,您可以使用 chardet
来尝试猜测它。请记住,这只是 猜测。使用不同的编码解码可能不会引发任何错误,但它可能会导致最终文本中出现错误的字符,因此您应该始终知道要使用哪种编码。
这就是说,如果您使用 Linux,标准 file
实用程序通常能够让您粗略猜测所使用的编码,但是对于更高级的用例,需要像 chardet 这样的东西.
找到正确的编码后,假设您发现它是 latin-1
,只需将 decode('utf-8')
替换为 decode('latin-1')
。