我有两列如下:
id, colA, colB
0, a, 13
1, a, 52
2, b, 16
3, a, 34
4, b, 946
etc...
我正在尝试创建第三列colC
,如果是colB
则为colA == a
,否则为0
。
这就是我的想法,但它不起作用:
data[data['colA']=='a']['colC'] = data[data['colA']=='a']['colB']
我也在考虑使用np.where()
,但我认为这不会起作用。
有什么想法吗?
答案 0 :(得分:6)
使用带掩码的loc
指定:
In [300]:
df.loc[df['colA'] == 'a', 'colC'] = df['colB']
df['colC'] = df['colC'].fillna(0)
df
Out[300]:
id colA colB colC
0 0 a 13 13
1 1 a 52 52
2 2 b 16 0
3 3 a 34 34
4 4 b 946 0
修改强>
或使用np.where
:
In [296]:
df['colC'] = np.where(df['colA'] == 'a', df['colC'],0)
df
Out[296]:
id colA colB colC
0 0 a 13 13
1 1 a 52 52
2 2 b 16 0
3 3 a 34 34
4 4 b 946 0
答案 1 :(得分:1)
df['colC'] = df[df['colA'] == 'a']['colB']
应该产生你想要的,afaik。
然后用df.fillna(inplace=True)