2016-11-18 16 views
0

私は、彼らはしかし10複数の条件に基づいてpandasデータフレーム列シリーズの特定のセル値を変更するにはどうすればよいですか?

の範囲1のに収まる場合、私はやるとき、パンダのデータフレームの列df.column_A内のすべての値を置き換えるしようとしています:

df.loc[(1 < df.column_A < 10), "Column_A"] = 1

を私は収穫している:

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

、私は:

df.loc[(df.column_A < 10) & (df.column_A > 1), "df.column_A"] = 1

私はすべてのエラーを得ていないのですが、値は置き換えられません。私が期待するようdf.column_A

df.loc[(df.column_A < 10) | (df.column_A > 1), "df.column_A"] = 1

すべての値は、1に置き換えます:

奇妙は私がやるときということです。

これは、行の構文が正しいことを意味します。したがって、間違いは私が理解できないいくつかの要因によるものでなければなりません。

私は間違っていますか?

答えて

1

これは簡単な問題です。 .locは、インデックスラベルまたはブール値リスト/ Seriesをとります。だから、これは動作します:私は列のインデックスの場所からdf.を削除

df.loc[(df.column_A < 10) & (df.column_A > 1), "column_A"] = 1 

注意。操作(1 < df.column_A < 10)は論理的と思われるが、一つの値に、全シリーズを崩壊しようとするため


df.loc[(1 < df.column_A < 10), "Column_A"] = 1 

は動作しません。 andorなどの組み合わせが必要かどうかわからないため、そのエラーが発生します。

列を正しく参照していないため、どちらも機能しません。あなたが何のエラーも起こっていないのは面白いです。おそらくあなたはあなたのプログラムを早く保存してくれたかもしれません。

関連する問題