2017-07-07 54 views
0

我正在閱讀excel表格中的數據框,這很好用。但是,Excel表格中的一列中有一個ID號碼被強制爲5個前向數字。因此,而不是32,Excel工作表具有00032,500表示它爲00500.當我將這個文件讀入熊貓時,它將這些數字轉換爲基數,因此00500在數據框中變成500。但是,由於我試圖將使用5位索引值的文件名與ID號相匹配,這實際上導致了問題。我只是使用列表系統,但我需要熊貓在遍歷行時輕鬆訪問多列數據。這是要點:熊貓數據框從excel中刪除額外的數字導入

downloads = r'C:\Users\...' 
filelist = os.listdir(downloads) 
SDC = [] 
for file in filelist: 
    if file.startswith('sdc'): 
     SDC.append(file[3:8]) 
print SDC 
if SDC == []: 
    print "There are no downloaded files to grab at this time." 

dir = r'C:\...' 
os.chdir(dir) 
for i, row in df.iterrows(): 
    if row['SDC ID'] in SDC: 
     dir = r'C:\bleh\Temporary Folder' + row['Theme'] 
     if not os.path.exists(dir): 
      os.makedirs(dir) 

如何強制熊貓的原始值快速迭代和檢查列表中的值?

+0

該列包含整數,所以'00500'就是excel如何顯示整數 –

+0

我明白了,但是我需要導入來強制保留額外的數字。我沒有看到導入時強制將列輸入作爲字符串的方式。 – WolVes

+0

您正在比較整數與字符串。無論格式如何,這都不會起作用。選擇一種類型並在該類型中進行比較。 –

回答

1

if row['SDC ID'] in SDC:檢查字符串列表中是否存在整數。有兩個簡單的解決方案,我可以看到:

  1. 作爲字符串比較。將您的整數格式化爲一個字符串,並保持大部分原樣。像if '{:05d}'.format(row['SDC ID']) in SDC:應該這樣做。它會將您的整數格式化爲零填充的五位數字。

  2. 作爲整數比較。您可以將文件名中的數字直接轉換爲整數,因爲您不會在任何地方使用它們的字符串屬性。將行SDC.append(file[3:8])更改爲SDC.append(int(file[3:8]))

鑑於顯示的信息,我更喜歡第二種選擇,但不是太多,沒有很好的理由超越美學。

+0

今天早些時候我嘗試了第二種方法,因爲我認爲這是簡單的答案。但是,由於某種原因,這種方法仍然保持0,因此與if語句直接比較導致響應失敗。我會現在嘗試你的第一個建議。 – WolVes

+1

@WolVes。你需要提供你的'df'變量的小樣本和你問題中的列的類型。 –

+0

對不起,未來會這樣做。感謝您的幫助瘋狂物理學家! – WolVes