我有一个类似于下面的数据框:
Name Volume Value May21 23 21321 James 12 12311 Adi22 11 4435 Hello 34 32454 Girl90 56 654654
我希望输出格式为:
Name Volume Value May 23 21321 James 12 12311 Adi 11 4435 Hello 34 32454 Girl 56 654654
想要从"名称"列中删除所有数字.
我最近来的是使用以下代码在单元级别执行此操作:
result = ''.join([i for i in df['Name'][1] if not i.isdigit()])
任何想法如何在系列/数据级别以更好的方式做到这一点.
您可以将str.replaceName
与正则表达式结合使用到列中:
import pandas as pd # Create example DataFrame a = pd.DataFrame.from_dict({'Name': ['May21', 'James', 'Adi22', 'Hello', 'Girl90'], 'Volume': [23, 12, 11, 34, 56], 'Value': [21321, 12311, 4435, 32454, 654654]}) a['Name'] = a['Name'].str.replace('\d+', '') print(a)
输出:
Name Value Volume 0 May 21321 23 1 James 12311 12 2 Adi 4435 11 3 Hello 32454 34 4 Girl 654654 56
正则表达式\d
代表"任何数字",+
代表"一个或多个".
因此,str.replace('\d+', '')
意思是:"用任何东西替换字符串中所有出现的数字".
您可以这样做:
df.Name = df.Name.str.replace('\d+', '')
要玩和探索,请在此处查看在线正则表达式演示:https : //regex101.com/r/Y6gJny/2
模式匹配的任何内容(\d+
即1个或多个数字)都将替换为空字符串。