在条件

时间:2017-02-22 13:17:14

标签: python python-3.x pandas

我有一个Dataframe df的例子:

  Col1        Col2
   a        "some string AXA some string "
   b        "some string2"

我想: 如果df.Col2包含" AXA"然后将值更改为1,否则将其更改为0。 所以我得到了:

  Col1        Col2
   a            1
   b            0

我尝试了类似的事情,

if "AXA" in df['Col2']:
    df['Col2'] = 1

或者如果我可以做类似

的事情
df.loc[df['Col2'] contains "AXA"] = 1   

谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

您可以boolean mask使用int,然后转为print (df.Col2.str.contains('AXA')) 0 True 1 False Name: Col2, dtype: bool df['Col2'] = df.Col2.str.contains('AXA').astype(int) print (df) Col1 Col2 0 a 1 1 b 0

print (df)
  Col1                         Col2
0    a  some string AXA some string
1    a  some string AXE some string
2    b                 some string2

df['Col2'] = np.where(df.Col2.str.contains('AXA'), 1,
             np.where(df.Col2.str.contains('AXE'), 2, 0))
print (df)
  Col1  Col2
0    a     1
1    a     2
2    b     0

编辑:如果需要按2个条件创建输出,最快使用双str.contains

required