我有一个如下所示的 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]
最佳答案
假设您的意思是“从 A 开始,C 的值为 1;从 B 开始,如果 C 的值为 0”,考虑到您的预期输出,这是有意义的,我可能会使用 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
或df.C*5+3 < 4
或任何其他 bool 系列。
关于python - 使用带有 bool 值的列来访问其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19461741/