我有一个熊猫数据框,如下所示:
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]
假设您的意思是“来自 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 == 1
ordf.C*5+3 < 4
或任何其他布尔系列。