Convert column name from int to string in pandas

I have a pandas framework with mixed column names:

1,2,3,4,5, 'Class'

When I save this data file in h5file, it says that performance will be affected due to mixed types. How to convert integer to string in pandas?

+8
python pandas
source share
2 answers

You can simply use 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([<class 'int'>, <class 'int'>, <class 'int'>, <class 'int'>, <class 'int'>, <class 'str'>], 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([<class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>], dtype=object) In [32]: df.to_hdf("out.h5", "d1") In [33]: 
+15
source share

You can just use df.columns = df.columns.map(str)

The first DSM answer df.columns = df.columns.astype(str) did not work for my frame. (I got TypeError: setting dtype for anything other than float64, or the object is not supported)

0
source share

All Articles