如果条件满足,pandas会创建一个等于另一列的列

时间:2015-11-12 16:16:20

标签: python if-statement pandas

我有两列如下:

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(),但我认为这不会起作用。

有什么想法吗?

2 个答案:

答案 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)

替换为零的NaN&#39