我有一个混合列名的pandas数据帧:
1,2,3,4,5,’班级’
当我将此数据帧保存到h5file时,它表示由于混合类型,性能将受到影响.如何在pandas中将整数转换为字符串?
解决方法:
你可以简单地使用df.columns = df.columns.astype(str):
In [26]: df = pd.DataFrame(np.random.random((3,6)), columns=[1,2,3,4,5,'Class'])
In [27]: df
Out[27]:
1 2 3 4 5 Class
0 0.773423 0.865091 0.614956 0.219458 0.837748 0.862177
1 0.544805 0.535341 0.323215 0.929041 0.042705 0.759294
2 0.215638 0.251063 0.648350 0.353999 0.986773 0.483313
In [28]: df.columns.map(type)
Out[28]:
array([, , , ,
, ], dtype=object)
In [29]: df.to_hdf("out.h5", "d1")
C:\Anaconda3\lib\site-packages\pandas\io\pytables.py:260: PerformanceWarning:
your performance may suffer as PyTables will pickle object types that it cannot
map directly to c-types [inferred_type->mixed-integer,key->axis0] [items->None]
f(store)
C:\Anaconda3\lib\site-packages\pandas\io\pytables.py:260: PerformanceWarning:
your performance may suffer as PyTables will pickle object types that it cannot
map directly to c-types [inferred_type->mixed-integer,key->block0_items] [items->None]
f(store)
In [30]: df.columns = df.columns.astype(str)
In [31]: df.columns.map(type)
Out[31]:
array([, , , ,
, ], dtype=object)
In [32]: df.to_hdf("out.h5", "d1")
In [33]:
标签:python,pandas
来源: https://codeday.me/bug/20191004/1853505.html