我有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条件感到困惑。
由于
答案 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
进行替换