2016-08-03 74 views
2

我使用os列出目錄中的文件名。我也使用熊貓來列出CSV文件中一列的內容。我已經打印了兩者的結果,現在我想匹配出現在兩個打印件中的名稱,並確定哪些名稱對一個打印件是獨佔的。以下是我的代碼,它可以獲取CSV文件的名稱和內容。在兩張照片中匹配相同的單詞

import os, sys 
import pandas as pd 


path = "/mydir/csvfile" 
dirs = os.listdir(path) 

for file in dirs: 
    print file 

fields = ['Column'] 

df = pd.read_csv('/mydir/csv_file', skipinitialspace=True, usecols=fields) 

print df.Column 

*編輯*

我想出了這個解決方案,它的工作原理。

import os, sys 
import pandas as pd 


path = "/mdir/csvfile" 
dirs = os.listdir(path) 

list_1 = [file for file in dirs] 



fields = ['column'] 

df =  pd.read_csv('/mydir/csvfile', skipinitialspace=True, usecols=fields) 

list_2 = df.column.values.tolist() 

list_3=[] 


for i in list_1: 
    if i in list_2: 
     list_3.append(i + " True") 
    else: 
     list_3.append(i + " False") 

print list_3 
+0

意識到我忘了真的有問題。我將如何去做這件事,有沒有辦法比較和匹配兩個打印? –

+0

不打印,將這些值保存到變量並比較這些變量。 –

回答

2

而不是

for file in dirs: 
    print file 

建立清單:

files = [file for file in dirs] 

然後使用數據幀進行檢查:

df.Column.isin(files) # this will check elementwise 
Out: 
0 True 
1 True 
2 True 
3 True 
Name: Column, dtype: bool 

或者

df.Column.isin(files).all() # if all of them are the same 
Out: True 
+0

這工作,謝謝! –

+0

不客氣。請注意,如果'files'有額外的文件,這可能會丟失。您可以通過其他方式進行比較:'pd.Series(files).isin(df.Column)'來確保。 – ayhan

+0

你知道我怎麼能得到這個工作,仍然給予元素與真或假?例如0 12fhaj True,1 757dyah False,2 fhjf8282 True ... –

1

所以據我瞭解,你有兩個列表。一個來自目錄,另一個來自熊貓的專欄。您需要兩個列表中的元素以及每個列表唯一的元素。比方說你的列表是這樣的:

List1 = ['a' , 'b' , 'c' , 'd', 'e', 'f'] 
List2 = ['c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i'] 

然後你的代碼產生什麼樣的我想你想可以使用列表理解和這樣的:

overlap = [i for i in List1 if i in List2] 
nonOverlapList1 = [j for j in List1 if j not in overlap] 
nonOverlapList2 = [k for k in List2 if k not in overlap] 
相關問題