2017-04-19 16 views
0

csvを開き、第1列で電子メールを検索しようとしています。存在する場合は、特定の行の第3列が '1'であるかどうかを確認します。私はそれに電子メールを持っている行の3番目の列だけをチェックする方法を理解できません。電子メールが入っている行のインデックスを取得する方法はありますか?私は行[行#] [2]のような何かをすることができますので、電子メールで行の列3を検索します。CSVファイルを検索して文字列を取得し、行インデックスをPython 2.7で取得する方法

with open('MyFile.csv', 'rb') as f:  
    reader = list(csv.reader(f)) 
    for row in reader: 
     if Email in row[0]: #checks if email exist 
      if '1' in row[2]: #searches every row instead of just the one with email 
       print "Account Already = 1" 

がどのように私はこのような何かを追加することができます:ここで私が今持っているものだ

with open('MyFile.csv', 'rb') as f:  
    reader = list(csv.reader(f)) 
    for row in reader: 
     if Email in row[0]: 
      print Email.index 
      #(lets say it returns '4') 
      if '1' in row[3][2]: #searches only 4th row for '1' 
       quit() 

EDIT--私は、これは私が使用しているものです、作業ました:

df =pd.read_csv('myfile.csv') 

a = np.where((df['Email'] == Email) & (df['Num'] == '1')) 
try: 
    if (a[0][0] + 1) > 0: 
    print "Account = 1" 
    quit() 
except IndexError: 
    pass 
+1

'row [4]'は現在の行の5番目の列で、 'row [4] [2]'は5番目の列の3番目の文字です。 3番目の列を確認しませんでしたか? ( 'row [2]') – DyZ

+0

@DYZはいありがとう、私は質問を編集しました。私は誤ってダウンの代わりに1を上げました。 – Ecom1414

+0

'row [3]'はまだ3番目の列ではなく、4番目の列です。また、おそらく '[2]'部分は必要ないでしょう。単に '' row [2] == '1' 'をチェックするだけです。 – DyZ

答えて

1
import pandas as pd 
import numpy as np 

df = pd.read_csv('your_csv.csv') 

np.where((df['email_column_name']=='[email protected]') & (df['3rd column name']== '1')) 
+0

は素晴らしいです!私は今使用しているコードで質問を更新しました。あなたは何か変更を加えますか? – Ecom1414

+0

@sorry私はあなたが何を意味するかは分かりませんでした。私は何を変えてくれると思いますか? – Allen

+0

申し訳ありませんが、質問を更新する前にコメントしました。私がしていたことをやるためのきれいな方法があるかどうかは分かりませんでした。 – Ecom1414

関連する問題