今天,我们继续学习pandas读取excel read_excel()中的参数。重点学习两个参数:dtype以及converters。dtype可以在读取时通过dict对某一列指定数据类型,而converters则可以在读取时通过dict对某一列或者某及列应用某一个函数,读取的是函数返回后的结果。
下面是官方文档的释义(英文挺简单的,可以阅读一下):
dtype : Type name or dict of column -> type, default None
Data type for data or columns.
E.g. {'a': np.float64, 'b': np.int32}
If converters are specified, they will be applied INSTEAD
of dtype conversion.
(如果converters也是做类型转换,则dtype优先。dtype的优先级高)
converters : dict, default None
Dict of functions for converting values in certain columns.
Keys can either be integers or column labels,
values are functions that take one input argument,
the Excel cell content, and return the transformed content.
1、 dtype的基本用法
代码举例如下:
如上图所示,excel表格的id其实是文本类型的,但是pandas读取后会变成int类型的
# 如下结果所示,id列变成了int64类型,
>>> df = pd.read_excel(r'D:/myExcel/1.xlsx', sheet_name='Sheet1')
>>> df
name math Chinese id
0 bob 23 12 123
1 millor 32 32 124
2 jiken 61 89 125
3 tom 34 94 126
4 json 98 12 127
5 dela 96 67 128
6 rison 90 34 129
>>> df.dtypes
name object
math int64
Chinese int64
id int64
dtype: object
# 但是,如果我们确实是需要文本类型的,这时,dtype可以派上用场了
>>> df = pd.read_excel(r'D:/myExcel/1.xlsx', sheet_name='Sheet1', dtype={'id':str})
>>> df
name math Chinese id
0 bob 23 12 123
1 millor 32 32 124
2 jiken 61 89 125
3 tom 34 94 126
4 json 98 12 127
5 dela 96 67 128
6 rison 90 34 129
# id已经转成object了,即str类型
>>> df.dtypes
name object
math int64
Chinese int64
id object
dtype: object
>>>
2、converters的基本用法
# math列每一列的值均加5
>>> df = pd.read_excel(r'D:/myExcel/1.xlsx', sheet_name='Sheet1', converters={'math': lambda x : x + 5})
>>> df
name math Chinese id
0 bob 28 12 123
1 millor 37 32 124
2 jiken 66 89 125
3 tom 39 94 126
4 json 103 12 127
5 dela 101 67 128
6 rison 95 34 129
哈哈,以上就是关于dtype以及converters参数的用法,欢迎关注微信公众号:python小工具。还有福利哦