次のような pandas データフレームがあります。
A B C
1 2 1
3 4 0
5 2 0
5 3 1
C の値が 1 の場合は A から値を取得し、C がゼロの場合は B の値を取得します。どうすればいいですか?最終的には、C が 1 の場合は A の値、C が 0 の場合は B の値を持つベクトルになりたいと思います。[1,4,2,5]
「from A は C の値が 1 であり、C の値が 0 の場合は B から」という意味であると仮定すると、これは意図した出力を考えると理にかなっていますSeries.where
。
>>> df
A B C
0 1 2 1
1 3 4 0
2 5 2 0
3 5 3 1
>>> df.A.where(df.C, df.B)
0 1
1 4
2 2
3 5
dtype: int64
これは、「C の対応する値が true の場合は A の値を使用してシリーズを作成し、そうでない場合は B の対応する値を使用する」と読み取られます。ここでは 1 が true であるためdf.C
、 をそのまま使用できますが、df.C == 1
ordf.C*5+3 < 4
またはその他のブール シリーズを使用することもできます。