【问题标题】:How to modify data of one column based on data present in another column of same row using pandas如何使用熊猫根据同一行另一列中存在的数据修改一列的数据
【发布时间】:2018-05-03 13:37:12
【问题描述】:

我有 5x6 数组。

数据如下

indx    sv-01   sv-02   status-1   status-2  valu-1   valu-2
 0       8       16       B          B        0.1      -0.02
 1       8       16       B          A        0.03     0.210
 2       8       16       A          B        0.23     0.34
 3       8       16       B          B        0.29     0.67
 4       8       16       A          A        0.23     0.67
 ..      ..      ..       ..         ..       ...      ...

我的目标是进行迭代,以便在状态列为 SV 8 或 16 时 A ,将其对应的值转换为 0(我需要它进行进一步计算)。我有一些本土方法,但可以 得不到想要的结果。我怎样才能以最小的和 如果条件。是否可以抛出熊猫数据框。而且无论何时 是 A 则不计算 SV,因此总 sv 将仅基于 B。 此时我对太多的 if 和 else 条件感到困惑。

谢谢

【问题讨论】:

    标签: arrays python-2.7 list pandas


    【解决方案1】:

    使用df.where,即

    df['valu-1'] = df['valu-1'].where(df['status-1']!='A',0)
    df['valu-2'] = df['valu-2'].where(df['status-2']!='A',0)
    

    输出:

    指数 sv-01 sv-02 状态 1 状态 2 值 1 值 2 0 0 8 16 B B 0.10 -0.02 1 1 8 16 B A 0.03 0.00 2 2 8 16 A B 0.00 0.34 3 3 8 16 B B 0.29 0.67 4 4 8 16 A A 0.00 0.00

    要选择 df sv-01 和 sv-02 为 8 和 16,您可以使用布尔索引,如

    ndf = df[(df['sv-01']==8) & (df['sv-02']==16)] 
    

    然后使用ndf.where进行替换

    【讨论】:

    • @巴拉特。谢谢
    猜你喜欢
    • 2019-08-11
    • 2021-06-25
    • 2014-12-27
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 2021-12-03
    • 2020-11-26
    • 2019-12-27
    相关资源
    最近更新 更多