1

次のような 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]

4

1 に答える 1

2

「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 == 1ordf.C*5+3 < 4またはその他のブール シリーズを使用することもできます。

于 2013-10-19T02:47:29.540 に答える