python - Pandas dataframe 列值不区分大小写替换 where <condition>

标签 python pandas dataframe replace case-insensitive

pandas.DataFrame.replace 是否有不区分大小写的版本? https://pandas.pydata.org/pandas-docs/version/0.21/generated/pandas.DataFrame.replace.html

我需要根据“where label == a or label == b or label == c”形式的不区分大小写的条件替换列中的字符串值。

最佳答案

其他一些答案的问题在于它们不适用于所有数据帧,仅适用于系列或可以隐式转换为系列的数据帧。我理解这是因为 .str 构造存在于 Series 类中,但不存在于 Dataframe 类中。

要使用 Dataframes,您可以使用 (?i) 扩展使正则表达式不区分大小写。我不相信这在所有类型的 RegEx 中都可用,但它适用于 Pandas。

d = {'a':['test', 'Test', 'cat'], 'b':['CAT', 'dog', 'Cat']}
df = pd.DataFrame(data=d)

    a       b
0   test    CAT
1   Test    dog
2   cat     Cat

然后像往常一样使用替换,但使用 (?i) 扩展名:

df.replace('(?i)cat', 'MONKEY', regex=True)

    a       b
0   test    MONKEY
1   Test    dog
2   MONKEY  MONKEY

关于python - Pandas dataframe 列值不区分大小写替换 where <condition>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47691921/

相关文章:

python - 如何使用 Python 和 Selenium 提取元素后面的文本?

python - 在 Python 上使用多进程包时,值未附加到列表中

python - 在 Django 1.8 的 Mysql 中使用自定义用户数据库结构

python - 添加列数据框 python plus 乘以数组中的数字

python - 在 pandas 数据框中使用查询语句选择列

python - sqlalchemy postgresql "Is Null"索引

python - 使用 Pandas to_datetime 将对象转换为日期时间不起作用

python - Pandas 分位数功能非常慢

python - 如何返回列标题,其中该行包含 Pandas Dataframe 中的最大值

python - Pandas :按日期返回出现次数