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 的索引
Python Pandas 和正则表达式使用字典替换 Dataframe 中的项目
pandas使用replace函数替换dataframe中的值:replace函数使用正则表达式对dataframe中的值进行替换