我尝试通过指定其中一列的值来选择行。只要所选值为纯 ASCII 字符,就可以完美地工作。但是如果包含非 ASCII 字符,则无论我如何编码该值,都无法使其正常工作。
以下是简化的示例,以说明问题:
>>> from __future__ import (absolute_import, division,
print_function, unicode_literals)
>>> import pandas as pd
>>> df = pd.DataFrame([[1, 'Stuttgart'], [2, 'München']], columns=['id', 'city'])
>>> df['city'] = df['city'].map(lambda x: x.encode('latin-1'))
>>> store = pd.HDFStore('test_store.h5')
>>> store.append('test_key', df, data_columns=True)
>>> store['test_key']
id city
0 1 Stuttgart
1 2 M�nchen
请注意,非ASCII字符串确实被正确存储:
>>> store['test_key']['city'][1]
'M\xfcnchen'
选择ASCII值的工作完美地进行:
选取 ASCII 值的效果非常好:
>>> store.select('test_key', where='city==%r' % 'Stuttgart')
id city
0 1 Stuttgart
但是选择非 ASCII 值无法返回行:
>>> store.select('test_key', where='city==%r' % 'München')
Empty DataFrame
Columns: [id, city]
Index: []
>>> store.select('test_key', where='city==%r' % 'München'.encode('latin-1'))
Empty DataFrame
Columns: [id, city]
Index: []
显然我做错了什么...如何解决这个问题?