2016-06-29 7 views
1

Less、Middle Greaterカラムのための方法はありますか?それが0より大きい場合、行を1に置き換えます。したがって、一番上の行は?条件が満たされた場合に行内のセルを置換します。

    Conc  Less Middle Greater 
Date             
2005-03-02 00:00 10.3 0.000000 1   1 

これは私が試した元

    Conc  Less Middle Greater 
Date             
2005-03-02 00:00 10.3 0.000000 0.083333 0.916667 

2005-03-02 01:00 14.1 0.000000 0.750000 0.250000 

2005-03-02 02:00 7.0 0.000000 0.833333 0.166667 

2005-03-02 03:00 7.0 0.000000 1.000000 0.000000 

2005-03-02 04:00 7.2 0.000000 1.000000 0.000000 

2005-03-02 06:00 6.6 0.333333 0.666667 0.000000 

2005-03-02 07:00 6.6 0.416667 0.583333 0.000000 

です:

df.loc[df['Less']>0:]=1 
df.loc[df['Less']==0:]=0 

をそれが赤く表示され、FALSE TRUE(正しい場所で)と言う: DTYPEを:bool、None、None)

私も試しました:のようなループ:

for line in df['Less']: 
    if df['Less'] >0: 
     df['Less']=1 

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

答えて

1

あなたはブール条件でlocを使用することができます。

In [250]: 
df.loc[df['Less'] > 0, 'Less'] = 1 
df 

Out[250]: 
        Conc Less Middle Greater 
Date            
2005-03-02 00:00:00 10.3 0.0 0.083333 0.916667 
2005-03-02 01:00:00 14.1 0.0 0.750000 0.250000 
2005-03-02 02:00:00 7.0 0.0 0.833333 0.166667 
2005-03-02 03:00:00 7.0 0.0 1.000000 0.000000 
2005-03-02 04:00:00 7.2 0.0 1.000000 0.000000 
2005-03-02 06:00:00 6.6 1.0 0.666667 0.000000 
2005-03-02 07:00:00 6.6 1.0 0.583333 0.000000 

このdf.loc[df['Less']>0:]が無効な構文である、あなたはカンマを使用して、関心

あなたの列名のリストを渡したいですforループバージョン:

for line in df['Less']: 
    if df['Less'] >0: 
     df['Less']=1 

は無効です。ifは、ブール値の配列を解釈する方法がわからないため、if (df['Less'] >0).all()またはif (df['Less'] >0).any()を実行した場合、それはうれしいでしょうが、行ごとに反復しているので意味がありません無駄なdf全体をテストします。一度にすべてを行う

+0

乾杯、大丈夫 あーを働いているようだ、私はそれを試した.any()しかし、それは1つだけだったとしても、全体のdfが真であると仮定した。 – SLE

0

columns = ['Less', 'Middle', 'Greater'] 
df[columns] = np.where(df[columns] >0, 1 ,0) 

または(列を選択するための二重括弧に注意してください)個別にそれを行うには:

df[['Less']] = np.where(df[['Less']] >0, 1 ,0) 
df[['Middle']] = np.where(df[['Middle']] >0, 1 ,0) 
df[['Greater']] = np.where(df[['Greater']] >0, 1 ,0) 
+0

npはnumpyです。import btw –

関連する問題