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