繁体   English   中英

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

[英]Pandas: read excel nrows not working, and dtype does not preserve 0 padding

在读取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。

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

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

在您的情况下,您要将其转换为字符串,那么您应该将其转换为零填充字符串 为此,有一个称为str.zfill()的特殊函数。

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

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

nrows适用于熊猫v 23,而您使用v 20

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM