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技术可以全面支持各类数据的标准化处理,让数据解读更加便利。