2016-08-03 9 views
2

osを使用してディレクトリ内のファイル名を一覧表示しています。私はまた、CSVファイルの1つの列の内容を一覧表示するためにパンダを使用しています。私は両方の結果を印刷しましたが、今度は両方のプリントに表示される名前を一致させたいと思います。以下は、CSVファイルの名前と内容を取得する私のコードです。2つのプリントで同じ語句を一致させる

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 

* EDIT *私が働く。この解決策が出ている

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

要素をtrueまたはfalseと一緒に与えるために、これをどのように動作させることができるか知っていますか?例えば0 12fhaj True、1 757dah False、2fhjf8282 True ... –

1

私が理解しているように、2つのリストがあります。 1つはディレクトリから、もう1つはPandasの列から。両方のリストにある要素だけでなく、各リストに固有の要素も必要です。私はあなたがリストの内包表記を使用して、次のように行くことができるしたいと思うものを生成するようにコード次に

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] 
関連する問題