2016-10-07 15 views
0

私は正の数と負の数の列を持ち、それを0と1のリストに変換したいと思います。数値が正の場合は1に置き換える必要があります。数値が負または0の場合は0に置き換えます。これを行うにはどうすればよいですか?例えば、Rで、私はどうなるpandas pythonデータフレームのカラム値を変換する

list = ifelse(list > 0, 1, 0) 

答えて

1

boolean値を返すと、01に変換するastype(int)を使用することができましたおよび0

print((df['A'] > 0).astype(int)) 

例:

df = pd.DataFrame({'A': [1,-1,2,-2,3,-3]}) 
print(df) 
A 
0 1 
1 -1 
2 2 
3 -2 
4 3 
5 -3 
print((df['A'] > 0).astype(int)) 
0 1 
1 0 
2 1 
3 0 
4 1 
5 0 
0

あなたがそのようなあなたは、このようなnumpy.whereで見ることができ

indexer = df[df['col']>0].index 
df.loc[indexer] = 1 

    indexer_2 = df[df['col']<0].index 
    df.loc[indexer_2] = 0 

かを持っている値を変更するインデクサとの.locを使用することができますあなたは

import numpy as np 
import pandas as pd 
pd.DataFrame(np.where(df>0,1,0),index=df.index) 
0

あなたはあなたのデータフレームの各列に関数を適用するDataFrame.applyを使用することができます。例えば:

import numpy as np 
import pandas as pd 
df = pd.DataFrame({'A': [1, -2, 3, -4]}) 
df['A'] = df.apply(lambda row:np.where(row['A'] > 0, 1, 0), axis=1) 

lambda関数は、任意の関数(lambdaである必要はない)に置き換えることができ、そしてaxis=1は、各行ではなく、各列に関数を適用することです。

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html

関連する問題