我有一个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
谢谢你的帮助!
答案 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