String 错误消息";异常:找不到正确的原子类型;执行pandas到_hdf时
我想将数据帧df保存到.h5文件maindatfile.h5: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.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,但尽管如此……我刚刚尝试过,但结果很不幸是一样的