我正在导入一个excel文件到熊猫数据帧与pandas.read_excel()
函数。
其中一列是表的主键:它是所有数字,但它存储为文本(Excel单元格左上角的绿色小三角形证实了这一点)。
但是,当我将文件导入熊猫数据框时,该列将以浮动形式导入。这意味着,例如,'0614'变为614。
导入列时是否有方法指定数据类型?我知道在导入CSV文件时可以这样做,但在read\u excel()
的语法中找不到任何内容。
我能想到的唯一解决方案是在Excel中的文本开头添加一个任意字母(将“0614”转换为“A0614”),以确保该列作为文本导入,然后在python中切掉“A”,以便将其与从SQL导入的其他表相匹配。
您只需指定转换器。我创建了以下结构的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.0
,read\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})