2017-06-20 117 views
2

我有一個熊貓數據框,其中所有列的值都在-1和1之間。我希望將這些值轉換爲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 

對於速度...
numpy@ayhan's answer

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

-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