2017-06-20 14 views
2

私は、すべての列が-1と1の間の値を持つpandasデータフレームを持っています。元の値が正か負かに応じて、これらの値を0または1に変換します。データフレーム値を変換する

このような変換を適用するメソッドはありますか、それとも反復処理で手作業で行う必要がありますか?

2014-02-19 -0.005585 2.273724 1.622362 2.971364 1.980529 
2014-02-20 0.005761 0.139337 0.129309 0.007561 0.086854 
2014-02-21 -0.001857 -0.868622 -0.555042 -0.591182 -0.488545 
2014-02-24 0.006428 0.120364 0.217812 0.117301 0.358756 
2014-02-25 -0.001697 0.032631 0.220509 -0.154151 0.592626 

は、日付列を想定し

2014-02-19 0 1 1 1 1 
2014-02-20 1 1 1 1 1 
2014-02-21 0 0 0 0 0 
2014-02-24 1 1 1 1 1 
2014-02-25 0 1 1 0 1 

答えて

3

する位置のインデックスです:

(df > 0).astype('int') 
Out: 
      1 2 3 4 5 
2014-02-19 0 1 1 1 1 
2014-02-20 1 1 1 1 1 
2014-02-21 0 0 0 0 0 
2014-02-24 1 1 1 1 1 
2014-02-25 0 1 1 0 1 

それがインデックスされていない場合、あなたは日付がの名前ですdf = df.set_index('Date')でそれを設定することができます列。簡潔にするため

+1

仕事は、ありがとう、たくさん:) – kjanko

+1

これは適切な答えです:-) – piRSquared

2

...速度について

(df > 0) * 1 

... @ayhan's answer

pd.DataFrame(
    (df.values > 0).astype(int), 
    df.index, df.columns 
) 


numpy -fiedバージョンの両方が得

  1 2 3 4 5 
2014-02-19 0 1 1 1 1 
2014-02-20 1 1 1 1 1 
2014-02-21 0 0 0 0 0 
2014-02-24 1 1 1 1 1 
2014-02-25 0 1 1 0 1 
関連する問題