Python 执行pd.read_msgpack(df.to_msgpack())时丢失的特殊字符编码

Python 执行pd.read_msgpack(df.to_msgpack())时丢失的特殊字符编码,python,numpy,pandas,character-encoding,Python,Numpy,Pandas,Character Encoding,我在使用msgpack()进行中间缓存时遇到了特殊字符的编码问题。这个问题可以用下面的例子来说明 ipdb> df diff zscore variable code pdl_comeg_n - bitte wählen Sie aus - 0 1.072795 ipdb> pd.read_msgpack(df.to_msgpack())

我在使用msgpack()进行中间缓存时遇到了特殊字符的编码问题。这个问题可以用下面的例子来说明

ipdb> df
                                          diff    zscore
    variable    code
    pdl_comeg_n - bitte wählen Sie aus -     0  1.072795


ipdb> pd.read_msgpack(df.to_msgpack())
                                       diff    zscore
variable    code
pdl_comeg_n - bitte wählen Sie aus -     0  1.072795
我试图规定utf8编码作为一种变通方法,但这仍然没有奏效

ipdb> pd.read_msgpack(df.to_msgpack(encoding='utf8'), encoding='utf8')
                                       diff    zscore
variable    code
pdl_comeg_n - bitte wählen Sie aus -     0  1.072795
我使用chardet检测字符串的编码,并尝试按如下方式对其进行解码,但没有成功

chardet.detect(df.to_msgpack())
{'confidence': 0.6422512189330332, 'encoding': 'ISO-8859-2'}
ipdb> pd.read_msgpack(df.to_msgpack(), encoding='ISO-8859-2')
                                       diff    zscore
variable    code
pdl_comeg_n - bitte wählen Sie aus -     0  1.072795
any suggestions ? would be much appreciated

我怀疑你需要“猜测”原始编码才能正确阅读。首先尝试在文件上运行
chardet
。您没有指定,但这在pandas 0.17.0中得到了修复:(您确实需要指定编码)现在有什么想法吗?我们无法更新pandas atmno的版本,这需要更新msgpack版本,这实际上有点棘手。