条件に基づいてデータフレームの列の値を変更しようとしています。私はこれを使用しているパンダ.locを使用しているときに警告が表示される
In [1]:df.head()
Out[2]: gen cont
timestamp
2012-07-01 00:00:00 0.293 0
2012-07-01 00:30:00 0.315 0
2012-07-01 01:00:00 NaN 0
2012-07-01 01:30:00 NaN 0
2012-07-01 02:00:00 0.231 0
:
In [1]:df.head()
Out[2]: gen cont
timestamp
2012-07-01 00:00:00 0.293 0
2012-07-01 00:30:00 0.315 0
2012-07-01 01:00:00 0.0 0
2012-07-01 01:30:00 0.005 0
2012-07-01 02:00:00 0.231 0
私は、2列の合計が0.01の閾値以下であるときはいつでもNaN
に'gen'
列を設定したいので、私が欲しいのはこれです
df.loc[df.gen + df.con <0.01 ,'gen'] = np.nan
それは私が望む結果を与えるが、警告付き:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
私は.locを使用しているので混乱しています。私はそれを推奨する方法で使用していると思います。
属性として列にアクセスするためにドットを使用する以外に、このコードでは、警告を生成するためにこれより前に何かをしておく必要があります。これらの行の前にdfをフィルタリングしましたか? – EdChum
以前にdfをフィルタリングしましたが、この行によって警告が生成されています。コンソールで行を実行すると、警告が再現されます – doctorer
@doctorer - フィルタリングのコードを追加できますか?おそらく 'df1 = df.copy()'が必要でしょう – jezrael