2017-03-08 10 views
0

列だけでなくデータフレーム全体の条件に基づいて、セルのデータフレーム内の値を置き換えるにはどうすればよいですか?基本的にはどのようなImはここでやろうとすると、私のデータフレーム内のすべての列にわたってゼロに±2と0の間のすべての値を置き換え、すべてのIはdf.whereを使用しようとしましたが、これは、計画条件付きパンダに基づく値の置換

df = df.where(operator.and_(df > (-1 * .2), df < 0),0) 
df = df.where(df > 0 , df * 1.2) 

として動作しません。あなたのロジックを逆にしようとすることができ、私はあなたが条件が真の場合、元のオブジェクトの値を保持する方法pandas.where作品を、誤解しました1.2

答えて

0

を掛け、それ以外の場合は交換したいゼロより大きい値:

df = df.where((df <= (-1 * .2)) | (df >= 0), 0) 
df = df.where(df <= 0 , df * 1.2) 
+0

|の代わりに&演算子を使用する必要があります。書かれているように、すべてが0に変更されます。私は編集しようとしましたが、SOは私が変更することを許可しませんでした| 〜に&。 – tnknepp

0

ここで、 o一行の解決策がありますが、これは素晴らしいことです。私はそのようなマスクを使用することを好む。

idx = (df < 0) & (df >= -0.2) 
df[idx] = 0 

この方法を使用すると読みやすくなりますので、これを2行に分割することをお勧めします。これを強制的に1行にすることもできます。

df[(df < 0) & (df >= -0.2)] = 0 

ちょっと別のオプションです。

関連する問題