解决pandas read_csv读取CSV文件时列类型错误的问题
在使用pandas的read_csv()函数读取CSV文件时,若未指定数据类型,数值列可能被默认读取为object类型,导致后续比较运算抛出TypeError。本文通过示例展示如何查看列类型,并利用dtype参数在读取时显式指定数值类型,从而解决字符串与整数比较的错误。
具体场景如下:
| 数据文件: 上海机场 (sh600009) |
24.11 | 3.58 |
| 东风汽车 (sh600006) | 74.25 | 1.74 |
| 中国国贸 (sh600007) | 26.38 | 2.66 |
| 包钢股份 (sh600010) | 61.01 | 2.35 |
| 武钢股份 (sh600005) | 75.85 | 1.3 |
| 浦发银行 (sh600000) | 6.65 | 0.96 |
在调用read_csv() API加载CSV文件后,尝试对其中某一列的数据进行大小比较操作时,
df=pd.read_csv(output_file,encoding='gb2312',names=['a','b','c']) df.b>20
程序抛出异常
TypeError:'>'not supported between instances of 'str' and 'int'
根据返回的错误信息判断,问题源于数据类型不匹配,实际读取回来的数据格式为字符串类型('str')。
in : df.dtypes out: a object b object c object dtype: object
由此可以确认,DataFrame中列b的数据类型被识别为object。
查阅read_csv()函数的官方文档,相关配置说明如下:
dtype : Type name or dict of column -> type, default None
Data type for data or columns. E.g. {'a': np.float64, 'b': np.int32} (unsupported with engine='python'). Use str or object to preserve and not interpret dtype.
New in version 0.20.0: support for the Python parser.
文档指出,若不指定类型,默认会使用字符串('str')或对象('object')来保存数据。
因此,在读取文件时,只需调整'dtype'参数即可解决该问题。
df=pd.read_csv(output_file,encoding='gb2312',names=['a','b','c'],dtype={'b':np.folat64})
以上关于解决pandas使用read_csv()读取文件时遇到类型问题的内容就是小编分享给大家的全部经验,希望能为大家提供参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













