python - 从 re.search 循环替换数据框列值

标签 python regex pandas

如何将现有数据框列的值替换为 re.search 循环中的值?

这是我的研究循环。

for i in dataset['col1']:
    clean = re.search('(nan|[0-9]{1,4})([,.][0-9]{1,4})?', i)
    print(clean.group())    

这是样本数据集(dataset)

    year    col1
1    2001    10.563\D
2    2002    9.540\A
3    2003    4.674\G
4    2004    3.2754\u
5    2005    nan\x

最佳答案

您可以使用 Series.apply将自定义函数应用于 dataset["col1"]。或者,你可以使用 Series.str.replace 更好。用替换字符串替换模式。

试试这个:

def func(i):
    clean = re.search('(nan|[0-9]{1,4})([,.][0-9]{1,4})?', i)
    return clean.group()

dataset["col1"] = dataset["col1"].apply(func)

或者更好,

df["col1"] = df["col1"].str.replace(r'(.*?)(\\.*?$)', r"\1")

输出:

>>> print(dataset)

   year    col1
0  2001  10.563
1  2002   9.540
2  2003   4.674
3  2004  3.2754
4  2005     nan

关于python - 从 re.search 循环替换数据框列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60965138/

相关文章:

python - Pandas 假期套餐黑色星期五折扣

python - 删除 pandas 数据框中某些观察结果(时间序列)的简单方法?

python - 将列表列表作为输入传递给 scipy.optimize.curve_fit

python - Flask:从本地计算机移动到生产服务器时的本地主机引用

python - 如何从多个列表生成字典?

Python正则表达式删除破折号之间的捕获电子邮件或忽略以.jpg等结尾的电子邮件

regex - golang如何处理复杂的正则表达式模式

c# - 排序字符串列表

python - 在多个条件下匹配 2 个 dfs

python - Django UpdateView 有空表格