2017-12-01 4 views
0

は、このデータフレームと繰り返し考えてみましょう:データフレームのリストを反復しながら、定義されていないデータフレームを無視するようPythonに教えてください。

NameError: name 'vdata' is not defined 

時々、私はVDATAしばらくのコマンドを実行したい:PDATA、VDATA、またはODATAのいずれかが定義されていない場合

pdata= {'col1': [1, 2], 'col2': [3, 4]} 
pdata= pd.DataFrame(data=pdata) 


for i in [pdata, vdata, odata]: 
    i.index = i.iloc[:, 0] 

を、Pythonはエラーをスローしますodataはまだ定義されていません。リスト内の定義されたオブジェクトに対して操作を実行し、定義されていないオブジェクトを単に無視するようにPythonに指示する方法は何ですか?

+0

完全なコードを再現できるように共有できますか? –

答えて

0

だけtry-except句でエラーをスキップ:私は、現時点ではこれをテストすることはできませんが、私たちは地元の人々(それを何をチェックすると

try: 
    for i in [pdata, vdata, odata]: 
     i.index = pd.DatetimeIndex(i.date) 
except: 
    # You can do whatever you want here; pass does nothing 
    pass 
+0

ソリューションをコピー&ペーストします。いいえ、まったく同じエラーが表示されます。 – Saeed

+0

エラーはこの部分の外にあることを意味します。上記の編集を試してみてください。 – rvd

+0

一般的に、このような基本例外を取り除くことは悪いことです。 NameErrorを特にターゲットにする方が良いかもしれません。 –

0
pdata= {'col1': [1, 2], 'col2': [3, 4]} 
pdata= pd.DataFrame(data=pdata) 

if pdata in locals(): 
    for i in [pdata]: 
     i.index = i.iloc[:, 0] 

if vdata in locals():  
    for i in [vdata]: 
     i.index = i.iloc[:, 0] 

if odata in locals(): 
    for i in [odata]: 
     i.index = i.iloca[:, 0] 

)であれば条件で、うそれは?やってみて。

私はすべてのコードを持っていないので、再現しにくいです。

+0

私はそれがコード全体であることを約束します:)コードは単にデータフレームの束の最初の列をインデックスに変換するだけです。そのコードには何もありません。 – Saeed

+0

私の解決策を試しましたか?私がローカル変数を読んでいるところからは、ローカル変数のdictを保持していますので、変数が存在するかどうかをチェックすることが可能になると考えていました。 –

+0

はい、 'TypeError: 'DataFrame'オブジェクトが変更可能であるため、ハッシュすることはできません。 ' – Saeed

関連する問題