String 错误消息";异常:找不到正确的原子类型;执行pandas到_hdf时

String 错误消息";异常:找不到正确的原子类型;执行pandas到_hdf时,string,python-3.x,pandas,hdf5,String,Python 3.x,Pandas,Hdf5,我想将数据帧df保存到.h5文件maindatfile.h5: df.to_hdf ("c:/Temp/MainDataFile.h5", "MainData", mode = "w", format = "table", data_columns=['_FirstDayOfPeriod','Category','ChannelId']) 并获取以下错误: ***异常:找不到正确的atom类型->[dtype->object,items->Index(['libelle\u Article',

我想将数据帧df保存到.h5文件maindatfile.h5:

df.to_hdf ("c:/Temp/MainDataFile.h5", "MainData", mode = "w", format = "table", data_columns=['_FirstDayOfPeriod','Category','ChannelId'])
并获取以下错误:

***异常:找不到正确的atom类型->[dtype->object,items->Index(['libelle\u Article','libelle\u segment',dtype='object')]

现在,如果我从df中删除“Libelléu Article”列(这是一个字符串列),我就不会再收到错误消息

这个专栏有什么问题?我怀疑其中有一个特殊的、被禁止的角色,但到目前为止还没有找到

更新1

在杰夫的评论之后,我尝试对“Libelléu Article”专栏进行编码:

df['Libellé_Article'] = df['Libellé_Article'].str.encode('utf-8')
该列现在显示如下:

df['Libellé_Article']
0                                               b'PAPETERIE'
2                                    b'NR CONTRIBUTION DEEE'
4                                         b'NON UTILISE 103'
7                         b"L'ENFANT SOUS TERREUR/MILLER A."
10                 b'ENERGIE VITALE ET AUTOGUERISON/CHIA M.'
12         b'ENERGIE COSMIQUE CETTE PUISSANCE QUI EST EN ...
13         b'ENERGIE COSMIQUE CETTE PUISSANCE QUI EST EN ...
18                     b"COMMENT ATTIRER L'ARGENT/MURPHY J."
19                     b"COMMENT ATTIRER L'ARGENT/MURPHY J."
当我对_hdf执行命令时,我得到:

***TypeError:无法序列化列[Libelléu Article],因为 其数据内容为[混合]对象数据类型


这将在py2中工作。对于py3,这应该在没有编码步骤的情况下工作。 这实际上是一个“混合”列,因为它包含字符串和unicode

In [24]: from pandas.compat import u

In [25]: df = DataFrame({'unicode':[u('\u03c3')] * 5 + list('abc') })

In [26]: df
Out[26]: 
  unicode
0       ?
1       ?
2       ?
3       ?
4       ?
5       a
6       b
7       c

In [27]: df['unicode'] = df.unicode.str.encode('utf-8')

In [28]: df.to_hdf('test.h5','df',mode='w',data_columns=['unicode'],format='table')

In [29]: pd.read_hdf('test.h5','df')
Out[29]: 
  unicode
0       ?
1       ?
2       ?
3       ?
4       ?
5       a
6       b
7       c

转换是否有可能抱怨unicode?你试过使用[u'Libelléu Article',u'Libelléu segment']吗?我知道这是Python3,但尽管如此……我刚刚尝试过,但结果很不幸是一样的