Pandas:如何检查列中的第 n 个字符是否在指定列表中并替换它?

数据框如下所示:


ID Desc

1  Hello

2  How

3  Have

4  You

5  Been

我想检查 Desc 的第三个字符是否在 ['A', 'B', 'C', 'D', 'E'] 中,不区分大小写,并将其替换为 'Replaced'。


我尝试过的是:


df.loc[df['Desc'].str[2] in ['A', 'B', 'C', 'D', 'E'] == True), 'Desc'] = 'Replaced'.

但它会吐出一个错误


The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我该如何解决这个问题?


哆啦的时光机
浏览 84回答 1
1回答

HUWWW

试试这个,使用pd.Series.isin:df['Desc'].str[2].str.lower().isin([*'abcde'])产量0    False1    False2    False3    False4     TrueName: Desc, dtype: bool现在:df.loc[df['Desc'].str[2].str.lower().isin([*'abcde']), 'Desc'] = 'Replaced'df输出:   ID      Desc0   1     Hello1   2       How2   3      Have3   4       You4   5  Replaced
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python