Pandas Dataframe - 根据正则表达式条件替换所有单元格值

Posted

技术标签:

【中文标题】Pandas Dataframe - 根据正则表达式条件替换所有单元格值【英文标题】:Pandas Dataframe - Replace all cell value subject to regex condition 【发布时间】:2021-09-25 21:18:45 【问题描述】:

我正在解决一个问题,在该列中,重复“。”的值很少。 ,例如-“.....”或“......”。

所以我想使用.loc 函数将所有这些值替换为np.NaN。 我想使用正则表达式函数来识别任何至少重复一次"." 的单元格值。

所以我在 Python 中使用了以下代码 -

energy.loc[bool(re.match('.+', energy['Energy Supply'])),'Energy Supply']=np.NaN

请帮忙

【问题讨论】:

【参考方案1】:

您需要将点转义如下,因为点代表任何字符,加号是一个或多个,试试看:)

re.match('\.+', energy['Energy Supply']))

【讨论】:

【参考方案2】:

您可以使用str.contains 来检查一个点,然后转义它以匹配它。

您不需要 + 量词,因为它表示 1 或更多。所以匹配一个点就足够了。

import pandas as pd
import numpy as np

data = [
    "test",
    "test.",
    "..."
]
energy = pd.DataFrame(data, columns=["Energy Supply"])
energy.loc[energy['Energy Supply'].str.contains(r'\.'), 'Energy Supply'] = np.NaN
print(energy)

输出

  Energy Supply
0          test
1           NaN
2           NaN

【讨论】:

以上是关于Pandas Dataframe - 根据正则表达式条件替换所有单元格值的主要内容,如果未能解决你的问题,请参考以下文章

Pandas - 过滤和正则表达式搜索 DataFrame 的索引

pandas DataFrame过滤器正则表达式

Python Pandas 和正则表达式使用字典替换 Dataframe 中的项目

pandas使用replace函数替换dataframe中的值:replace函数使用正则表达式对dataframe中的值进行替换

使用正则表达式解析多个文本字段并编译成 Pandas DataFrame

Pandas Dataframe 使用正则表达式检查值是不是存在