2016-12-02 13 views
1

現在の週がまだ値に一致していない場合は、if row['Val'] > 1.5:を検索するための条件を追加したいと思います。だから、私のスクリプトで私は現在、(2週7上のエントリと8との)この取得:iterrowsを使用した場合の "index.week"フィルタ

Week is: 3.0 
Value is: 2.55241826585 
Week is: 6.0 
Value is: 1.55068781498 
Week is: 7.0 
Value is: 1.50624949327 
Week is: 7.0 
Value is: 1.64751555163 
Week is: 8.0 
Value is: 1.79860293902 
Week is: 8.0 
Value is: 1.97472511905 
Week is: 9.0 
Value is: 2.31025762754 
Week is: 10.0 

所望の出力はこれです:

Week is: 3.0 
Value is: 2.55241826585 
Week is: 6.0 
Value is: 1.55068781498 
Week is: 7.0 
Value is: 1.64751555163 
Week is: 8.0 
Value is: 1.79860293902 
Week is: 9.0 
Value is: 2.31025762754 
Week is: 10.0 

だから、週7および8つのエントリのみを持っています。

擬似コード:なしその他の試合であれば

今週: ものを行う

データ:

ts = pd.DataFrame(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) 
ts.columns = ['Val'] 
ts['Week'] = ts.index.week 
for index, row in ts.iterrows(): 
    if row['Val'] > 1.5: 
     print("Week is:",row['Week'],'\n'"Value is:",row['Val']) 
+1

なぜ、繰り返し前に 'drop_duplicates(サブセット= '週')していないのですか? – EdChum

+0

[this](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html#pandas.DataFrame.drop_duplicates): 'ts = ts.drop_duplicates(サブセット= '週') ' – EdChum

+0

こんにちはEdChum、あなたは本当にあなたの入力を高く評価してくれました。これは単純なダミーの例です。私はあなたの提案がこれを行う良い方法だと感謝します。しかし、複雑なデータセット(市場データ)に多くの条件を使用して.shiftなどを使用しているときにiterrowsオプションを実行する方法を学ぶ必要もあります。 。 – ade1e

答えて

1

あなたが代わりに各行に反復を事前にフィルタリングし、その後、することができなければなりません重複を削除します。ここでは、行によってapply、行を使用したワンライナーです:

ts[ts.Val>1.5].drop_duplicates(subset='Week').apply(lambda row: 
               print("Week is:",row['Week'], 
                 '\n'"Value is:",row['Val']), 
               axis=1) 

あなたが本当にそれをも、やみくもに各行に反復します。リストを使用して週を保存し、まだ完了していないかどうかを確認してください。

ts = pd.DataFrame(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) 
ts.columns = ['Val'] 
ts['Week'] = ts.index.week 
weeks_done = [] 
for index, row in ts.iterrows(): 
    if (row['Val'] > 1.5) & (row['Week'] not in weeks_done): 
     print("Week is:",row['Week'],'\n'"Value is:",row['Val']) 
     weeks_done.append(row['Week']) 
+0

これはありがたいですが、このポストは、リクエストごとに反復するときに、「私の基本スクリプトを条件に追加したい」ということを学ぶためのものです。実際のデータセットには多くの条件があり、それほど単純ではありません。 Imがいつもそうするように指示したダミーのサンプル – ade1e

+0

Fine。更新を参照... –

+0

あなたの助けと忍耐ありがとう、ありがとう。 – ade1e

関連する問題