Python Pandas-将匹配行增加1

Python Pandas-将匹配行增加1,python,pandas,Python,Pandas,我有下面的代码,其中数据帧d有两列,col1为字符串值,col2为int值 我希望找到与模式匹配的所有行(使用contains),然后将对应行的col2值增加1。在我的代码的最后一行中,我试图增加1,我得到了以下错误: SettingWithCopyWarning:正在尝试在副本上设置值 从数据帧切片。尝试使用.loc[行索引器、列索引器]= 值,请参见文档中的注意事项: self[name]=值 如何使用向量运算增加值。我正试图避免for循环。让这个: df['col2'] = df.col1

我有下面的代码,其中数据帧d有两列,col1为字符串值,col2为int值

我希望找到与模式匹配的所有行(使用contains),然后将对应行的col2值增加1。在我的代码的最后一行中,我试图增加1,我得到了以下错误:

SettingWithCopyWarning:正在尝试在副本上设置值 从数据帧切片。尝试使用.loc[行索引器、列索引器]= 值,请参见文档中的注意事项: self[name]=值

如何使用向量运算增加值。我正试图避免for循环。

让这个:

df['col2'] = df.col1.str.contains('ab').astype(int) + df.col2

输出:

  col1  col2
0  abc     1
1  ave     1
2  abd     1
3  ave     1
4  abe     1
5  ave     1
让我们这样:

df['col2'] = df.col1.str.contains('ab').astype(int) + df.col2

输出:

  col1  col2
0  abc     1
1  ave     1
2  abd     1
3  ave     1
4  abe     1
5  ave     1
为了好玩:——)

为了好玩:——)


您希望您的输出是什么?您希望您的输出是什么?谢谢您的解决方案。两者都很好。你能简要解释一下第一种解决方案吗?当然可以。。使用contains方法查看col1系列use.str访问器,检查该字符串中是否包含'ab',如果包含,则该方法返回True。然后,可以使用astype将True强制转换为等于1的整数。现在,将1添加回Col2中的值。第二种方法的工作原理是相同的,只是我用整数1乘以隐式转换,并返回整数1,而不是使用astype转换为整数。感谢您的解决方案。两者都很好。你能简要解释一下第一种解决方案吗?当然可以。。使用contains方法查看col1系列use.str访问器,检查该字符串中是否包含'ab',如果包含,则该方法返回True。然后,可以使用astype将True强制转换为等于1的整数。现在,将1添加回Col2中的值。第二种方法的工作原理是相同的,不同的是,我没有使用astype将其转换为整数,而是将其乘以整数1,然后执行隐式转换并返回整数1。
pd.to_numeric(df.col1.replace({'ab':1},regex=True),errors='coerce').fillna(0)+df.col2
Out[16]: 
0    1.0
1    1.0
2    1.0
3    1.0
4    1.0
5    1.0
dtype: float64