在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。
答案 0 :(得分:1)
格式化无效的原因是因为Excel的格式化仅更改数据的显示方式,而不是数据的存储方式。
更改数据存储方式;您需要更改文件的本机格式;或以所需的方式格式化数据。
在您的情况下,您要将其转换为字符串,应该将其转换为零填充字符串;为此,有一个名为str.zfill()
的特殊功能。
问题的第二部分要简单得多-在熊猫版本0.23.0中添加了nrows
的{{1}}参数
答案 1 :(得分:1)
如果您在excel中设置格式,这并不意味着excel文件中存储的值实际上是'01'。将其另存为csv,然后在记事本中打开它。我的猜测是您不应该看到'01'而是看到'1'
nrows
用于大熊猫v 23,而您使用的是v 20