Pyt*_*ous 47 python dataframe pandas
我正在使用该pandas.read_excel()
函数将excel文件导入到pandas数据框中.
其中一列是表格的主键:它是所有数字,但它以文本形式存储(Excel单元格左上方的小绿色三角形证实了这一点).
但是,当我将文件导入pandas数据帧时,该列将作为float导入.这意味着,例如,'0614'变为614.
有没有办法在导入列时指定数据类型?我知道这在导入CSV文件时是可能的,但在语法中找不到任何内容read_excel()
.
我能想到的唯一解决方案是在Excel的文本开头添加一个任意字母(将'0614'转换为'A0614'),以确保将列导入为文本,然后切掉'A'在python中,所以我可以将它与我从SQL导入的其他表匹配.
tnk*_*epp 87
您只需指定转换器.我创建了一个以下结构的Excel电子表格:
names ages
bob 05
tom 4
suzy 3
Run Code Online (Sandbox Code Playgroud)
"年龄"列的格式为字符串.载入:
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
Run Code Online (Sandbox Code Playgroud)
Nic*_*eli 25
从函数开始v0.20.0
,可以使用函数中的dtype
关键字参数read_excel()
来指定需要应用于列的数据类型,就像它存在的 read_csv()
情况一样.
在同一列名称上使用converters
和dtype
参数将导致后者被遮蔽而前者获得优先权.
1)为了不解释它,dtypes
而是传递它们之前在文件中的所有内容,我们可以将这个arg设置为str
或者object
以便我们不会弄乱我们的数据.(一个这样的情况将是数字中的前导零,否则会丢失)
pd.read_excel('file_name.xlsx', dtype=str) # (or) dtype=object
Run Code Online (Sandbox Code Playgroud)
2)它甚至支持一个字典映射,其中keys
构成列名称和values
它的相应数据类型,特别是当你想要改变dtype
所有列的子集时.
# Assuming data types for `a` and `b` columns to be altered
pd.read_excel('file_name.xlsx', dtype={'a': np.float64, 'b': np.int32})
Run Code Online (Sandbox Code Playgroud)
小智 12
如果您能够正确读取 Excel 文件,但只有整数值未显示。你可以这样指定。
df = pd.read_excel('my.xlsx',sheetname='Sheet1', engine="openpyxl", dtype=str)
Run Code Online (Sandbox Code Playgroud)
这应该将您的整数值更改为字符串并显示在数据框中
read_excel()函数有一个converter参数,您可以在其中应用函数以在某些列中输入.您可以使用它将它们保存为字符串. 文件:
用于转换某些列中的值的函数的字典.键可以是整数或列标签,值是带有一个输入参数的函数,Excel单元格内容,并返回转换后的内容.
示例代码:
pandas.read_excel(my_file, converters = {my_str_column: str})
Run Code Online (Sandbox Code Playgroud)
如果您不知道数据帧中列的数量和名称,则此方法可以很方便:
column_list = []
df_column = pd.read_excel(file_name, 'Sheet1').columns
for i in df_column:
column_list.append(i)
converter = {col: str for col in column_list}
df_actual = pd.read_excel(file_name, converters=converter)
Run Code Online (Sandbox Code Playgroud)
其中column_list是列名列表.
如果您不知道列名并且想要为所有列指定str数据类型:
table = pd.read_excel("path_to_filename")
cols = table.columns
conv = dict(zip(cols ,[str] * len(cols)))
table = pd.read_excel("path_to_filename", converters=conv)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
69928 次 |
最近记录: |