私は正の数と負の数の列を持ち、それを0と1のリストに変換したいと思います。数値が正の場合は1に置き換える必要があります。数値が負または0の場合は0に置き換えます。これを行うにはどうすればよいですか?例えば、Rで、私はどうなるpandas pythonデータフレームのカラム値を変換する
:
list = ifelse(list > 0, 1, 0)
私は正の数と負の数の列を持ち、それを0と1のリストに変換したいと思います。数値が正の場合は1に置き換える必要があります。数値が負または0の場合は0に置き換えます。これを行うにはどうすればよいですか?例えば、Rで、私はどうなるpandas pythonデータフレームのカラム値を変換する
:
list = ifelse(list > 0, 1, 0)
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
あなたがそのようなあなたは、このような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)
あなたはあなたのデータフレームの各列に関数を適用する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