[英]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.