test['b']=test['a'].mask(test['a'].str.contains('a3-'),test['a'].str.extract('\d$'))报错incompatinle indexer with dataframe
时间: 2023-09-27 14:05:49 浏览: 44
这个报错出现的原因是 `mask` 函数返回的是一个 `Series` 类型的对象,而你需要将其作为 DataFrame 的一列,所以需要使用 `[]` 操作符将其转换为 DataFrame。修改代码如下所示:
```
test['b'] = test[['a']].apply(lambda x: x.mask(x.str.contains('a3-'), x.str.extract('\d$')))[0]
```
这里使用了 `apply` 函数,将 `mask` 操作应用到每一行上,然后将结果转换为 DataFrame 中的一个列。注意这里使用了 `[0]` 操作符来获取结果中的第一列。
相关问题
test['b']=test['a'].mask(test['a'].str.contains('a3'),test['a'.].str.extract('\d$'))报错incompatinle indexer with dataframe
这个报错是因为在 `test['a'.].str.extract('\d$')` 中的 `.str` 是多余的,应该写成 `test['a'].str.extract('\d$')`。修改后的代码应该是:
```
test['b'] = test['a'].mask(test['a'].str.contains('a3'), test['a'].str.extract('\d$'))
```
阅读全文