Pandas 如何在列中删除字符串中不想保留的部分

Pandas 如何在列中删除字符串中不想保留的部分

在数据处理过程中,我们常常会遇到要删除一列中的字符串的某些部分,以便更好地分析和利用数据。这时,我们用到了 Pandas 中的字符串方法来实现。在本文中,我们将介绍如何使用 Pandas 的字符串方法删除列中的特定内容。

阅读更多:Pandas 教程

一个例子

下面,我们通过一个具体的例子来说明如何在 Pandas 中删除不想保留的部分。以下这个数据集中,包含商品编号和商品名称两列。我们需要在商品名称列中删除不需要的编号部分,只保留商品名称。

id 商品名称
001 Nike T-shirt
002 Adidas Shoes
003 Puma Cap

完整代码:

import pandas as pd

df = pd.DataFrame({'id': ['001', '002', '003'],
                   '商品名称': ['Nike T-shirt', 'Adidas Shoes', 'Puma Cap']})

df['商品名称'] = df['商品名称'].str.replace('\d+', '').str.strip()

print(df)

输出结果:

   id     商品名称
0  001  Nike T-shirt
1  002  Adidas Shoes
2  003      Puma Cap

使用正则表达式删除特定部分

我们通常会把需要删除的部分通过正则表达式规定,进而在数据框的列名下运用 Pandas 的字符串方法。

例如,如果我们要删除商品名称中的商品编号,可以使用如下语句:

df['商品名称'] = df['商品名称'].str.replace('\d+', '').str.strip()

这里的 \d+ 表示所有连续的数字,即商品编号。

如果要删除的内容不止数字,需要根据具体情况设置相应的正则表达式。例如,如果商品名称中包含空格和“-”号,并且编号在这些符号之后,我们可以使用如下代码来删除商品编号:

df['商品名称'] = df['商品名称'].str.replace('-\d+', '').str.split().str[-1]

这段代码中,我们首先使用 str.replace 删除了“-”号以及后面所有的数字,并且用 str.split() 对商品名称按照空格进行分词,第一项为商品名称,我们取最后一项即可。

使用函数删除特定部分

在字符串方法中,也可以使用 Python 的内置函数和自定义函数进行复杂的字符串操作。例如,在商品名称中存在“/”和“-”等特殊符号,而商品编号紧接着这些特殊符号,我们可以通过自定义函数来删除编号部分。

def remove_numbers(s):
    import re
    pattern = re.compile('-\d+|/\d+|\\d+|_\\d+|(\d+\.?\d+)|,')
    return re.sub(pattern, '', s)

df['商品名称'] = df['商品名称'].apply(remove_numbers)

在这里,我们定义了一个带有自定义规则的 remove_numbers 函数。里面用到了正则表达式的知识,将目标字符串中所有数量编号的字符全部删除。在处理完毕后,函数返回一个新的字符串,作为新的商品名称。

总结

在 Pandas 中,我们可以使用字符串方法,通过正则表达式和自定义函数来删除特定的部分。除了字符串的处理,不关心数值大小和字母顺序的内容处理如日期格式的转化,疫情数据的收集等也是数据分析中需要面对的挑战,Blackboard AI的 NLP技术可以全面支持各类数据的标准化处理,让数据解读更加便利。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程