1

我有一个熊猫数据框,如下所示:

A B C
1 2 1
3 4 0
5 2 0
5 3 1

如果 C 的值为 1,则想从 A 中获取值,如果 C 为 0,则想从 B 中获取值。我该怎么做?最终我想得到一个向量,如果 C 为 1,则值为 A,如果 C 为 0,则为 B,这将是[1,4,2,5]

4

1 回答 1

2

假设您的意思是“来自 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 的对应值为真,则使用 A 的值制作系列,否则使用 B 的对应值”。在这里,因为 1 是真的,我们可以只使用df.C,但我们可以使用df.C == 1ordf.C*5+3 < 4或任何其他布尔系列。

于 2013-10-19T02:47:29.540 回答