如何使用pandas基于同一行的另一列中存在的数据修改一列的数据

时间:2017-11-20 10:49:01

标签: arrays python-2.7 list pandas

我有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(我需要它进一步计算)。我有一些本土方式,但可以 不要让它成为欲望的结果。我怎样才能达到这个目标,最小的和 if condition.Is有可能抛出pandas数据帧。而且每当有 是A然后SV将不计算,因此总sv将仅基于B. 在这一刻,我对过多的if和else条件感到困惑。

由于

1 个答案:

答案 0 :(得分: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)

输出:

    indx  sv-01  sv-02 status-1 status-2  valu-1  valu-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进行替换