如何将xls中的所有字段作为字符串导入Pandas数据帧?

时间:2017-01-25 22:04:55

标签: python excel python-3.x pandas dataframe

我正在尝试将xlsx中的文件导入Python Pandas数据帧。我想防止字段/列被解释为整数,从而丢失前导零或其他所需的异构格式。

因此,对于包含100列的Excel工作表,我将使用范围(99)的dict理解来执行以下操作。

import pandas as pd
filename = 'C:\DemoFile.xlsx'

fields = {col: str for col in range(99)}

df = pd.read_excel(filename, sheetname=0, converters=fields)

这些导入文件确实始终有不同数量的列,我希望处理这种情况的方式不同于手动更改范围。

是否有人有任何进一步的建议或替代方法,可以将Excel文件读入数据框,并默认将所有字段视为字符串?

非常感谢!

2 个答案:

答案 0 :(得分:0)

试试这个:

xl = pd.ExcelFile(r'C:\DemoFile.xlsx')
ncols = xl.book.sheet_by_index(0).ncols
df = xl.parse(0, converters={i : str for i in range(ncols)})

<强>更新

In [261]: type(xl)
Out[261]: pandas.io.excel.ExcelFile

In [262]: type(xl.book)
Out[262]: xlrd.book.Book

答案 1 :(得分:-1)

通常的解决方案是:

  1. 读入一行数据只是为了获取列名和列数
  2. 自动创建字典,其中每列具有字符串类型
  3. 使用在步骤2中创建的字典重新读取完整数据。