【问题标题】:Using a column with a boolean to access other columns使用带有布尔值的列访问其他列
【发布时间】:2013-10-19 02:34:55
【问题描述】:

我有一个如下所示的 pandas 数据框:

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]

【问题讨论】:

    标签: python numpy pandas


    【解决方案1】:

    假设您的意思是“来自 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 == 1df.C*5+3 < 4 或任何其他布尔系列。

    【讨论】:

    • 似乎它应该可以工作......虽然无法让它返回正确的值......
    • @goldisfine:嗯,这很奇怪。你有一个给出错误结果的小例子吗?
    • @goldisfine 你可能在df 中有字符串。如果这样做,结果将不是上面@DSM 显示的那样,它将是原始的df.A Series
    猜你喜欢
    • 2019-12-27
    • 2022-06-10
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多