提问者:小点点

Python:读取Excel文件时如何指定数据类型?


我正在导入一个excel文件到熊猫数据帧与pandas.read_excel()函数。

其中一列是表的主键:它是所有数字,但它存储为文本(Excel单元格左上角的绿色小三角形证实了这一点)。

但是,当我将文件导入熊猫数据框时,该列将以浮动形式导入。这意味着,例如,'0614'变为614。

导入列时是否有方法指定数据类型?我知道在导入CSV文件时可以这样做,但在read\u excel()的语法中找不到任何内容。

我能想到的唯一解决方案是在Excel中的文本开头添加一个任意字母(将“0614”转换为“A0614”),以确保该列作为文本导入,然后在python中切掉“A”,以便将其与从SQL导入的其他表相匹配。


共3个答案

匿名用户

您只需指定转换器。我创建了以下结构的excel电子表格:

names   ages
bob     05
tom     4
suzy    3

其中“年龄”列被格式化为字符串。要加载:

import pandas as pd

df = pd.read_excel('Book1.xlsx',sheetname='Sheet1',header=0,converters={'names':str,'ages':str})
>>> df
       names ages
   0   bob   05
   1   tom   4
   2   suzy  3

匿名用户

v0开始。20.0read\u excel()函数中的dtype关键字参数可用于指定需要应用于列的数据类型,就像在read\u csv()案例中存在的数据类型一样。

在同一个列名上使用转换器dtype参数将导致后者被遮蔽,而前者获得优先。

1)为了使它不解释dtype,而是传递它的列的所有内容,因为它们最初在文件中,我们可以将此arg设置为str对象,这样我们就不会搞乱我们的数据。(一个这样的例子是数字中的前导零,否则会丢失)

pd.read_excel('file_name.xlsx', dtype=str)            # (or) dtype=object

2) 它甚至支持dict映射,其中构成列名和它是要设置的相应数据类型,特别是当您想要更改所有列的子集的数据类型时。

# Assuming data types for `a` and `b` columns to be altered
pd.read_excel('file_name.xlsx', dtype={'a': np.float64, 'b': np.int32})

匿名用户

read_excel()函数有一个转换器参数,您可以在其中将函数应用于某些列中的输入。你可以用这个来保持它们作为字符串。文档:

用于转换某些列中的值的函数的指令。键可以是整数或列标签,值是接受一个输入参数的函数,即Excel单元格内容,并返回转换后的内容。

示例代码:

pandas.read_excel(my_file, converters = {my_str_column: str})