熊猫:读取Excel nrows无效,并且dtype不会保留0填充

时间:2018-07-12 02:30:46

标签: python pandas

在Excel中读取,指定dtype和nrows时,我很难定义参数。

以这个以excel .xlsx格式保存的小表为例。 'col1'数字以0填充。

col1    col2
01  a
02  b
03  c
04  d

第一个问题,我想阅读整个表格,但保留填充。我尝试使用dtype定义为object或str,并且也使用了转换器(如下)。 dtype将转换为对象,但是,不会保留填充。反正有这样做吗?

pd.read_excel(path, sheetname=0, dtype={'col1': object}, nrows=5)
pd.read_excel(path, sheetname=0, converters={'col1':lambda x: str(x)}, nrows=5)

第二个问题,我尝试使用nrows(如下)提取数据框的子集。但是,这根本不起作用,仍然会拉出整个表。

pd.read_excel(path, sheetname=0, nrows=2)

对于这两种情况,它在pd.read_csv中都能正常工作

我正在使用pandas v0.20.3。

2 个答案:

答案 0 :(得分:1)

格式化无效的原因是因为Excel的格式化仅更改数据的显示方式,而不是数据的存储方式。

更改数据存储方式;您需要更改文件的本机格式;或以所需的方式格式化数据。

在您的情况下,您要将其转换为字符串,应该将其转换为零填充字符串;为此,有一个名为str.zfill()的特殊功能。

问题的第二部分要简单得多-在熊猫版本0.23.0中添加了nrows的{​​{1}}参数

答案 1 :(得分:1)

如果您在excel中设置格式,这并不意味着excel文件中存储的值实际上是'01'。将其另存为csv,然后在记事本中打开它。我的猜测是您不应该看到'01'而是看到'1'

nrows用于大熊猫v 23,而您使用的是v 20