I'm starting to tear my hair out with this - so I hope someone can help. I have a pandas DataFrame that was created from an Excel spreadsheet using openpyxl. The resulting DataFrame looks like:
print image_name_data      id           image_name 0  1001  1001_mar2014_report 1  1002  1002_mar2014_report 2  1003  1003_mar2014_report  [3 rows x 2 columns]   …with the following datatypes:
print image_name_data.dtypes id            float64 image_name     object dtype: object   The issue is that the numbers in the id column are, in fact, identification numbers and I need to treat them as strings. I've tried converting the id column to strings using:
image_name_data['id'] = image_name_data['id'].astype('str')   This seems a bit ugly but it does produce a variable of type 'object' rather than 'float64':
print image_name_data.dyptes id            object image_name    object dtype: object   However, the strings that are created have a decimal point, as shown:
print image_name_data        id           image_name 0  1001.0  1001_mar2014_report 1  1002.0  1002_mar2014_report 2  1003.0  1003_mar2014_report  [3 rows x 2 columns]   How can I convert a float64 column in a pandas DataFrame to a string with a given format (in this case, for example, '%10.0f')?
In order to convert data types in pandas, there are three basic options: Use astype() to force an appropriate dtype. Create a custom function to convert the data. Use pandas functions such as to_numeric() or to_datetime()
If you want to change the data type for all columns in the DataFrame to the string type, you can use df. applymap(str) or df. astype(str) methods.
I'm unable to reproduce your problem but have you tried converting it to an integer first?
image_name_data['id'] = image_name_data['id'].astype(int).astype('str')   Then, regarding your more general question you could use map (as in this answer). In your case:
image_name_data['id'] = image_name_data['id'].map('{:.0f}'.format) 
                        If you could reload this, you might be able to use dtypes argument.
pd.read_csv(..., dtype={'COL_NAME':'str'}) 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With