我有一个python数据框架,列名为“认可该专栏应该有认证数据:"10/10/2011”或put:“”未认证“,但在大多数情况下,未经认证的专栏都有一些文本,比如:”这个业务没有被认证……“我想替换全文,只写:”未认证“
现在我写了一个函数:
def notAcredited(string):
if ('Not' in string or 'not' in string):
return 'Not Accredited'我正在用一个循环实现这个函数,是否可以用".apply“方法来实现呢?
for i in range(len(df_1000_1500)):
accreditacion = notAcredited(df_1000_1500['BBBAccreditation'][i])
if accreditacion == 'Not Accredited':
df_1000_1500['BBBAccreditation'][i] = accreditacion发布于 2015-11-17 15:44:33
您可以使用向量化字符串方法Series.str.replace。
In [72]: df = pd.DataFrame({'accredited': ['10/10/2011', 'is not accredited']})
In [73]: df
Out[73]:
accredited
0 10/10/2011
1 is not accredited
In [74]: df['accredited'] = df['accredited'].str.replace(r'(?i).*not.*', 'not accredited')
In [75]: df
Out[75]:
accredited
0 10/10/2011
1 not accredited传递给replace的第一个参数,例如r'(?i).*not.*',可以是任何正则表达式。第二个可以是任何正则表达式替换值--与re.sub所接受的字符串类型相同。regex模式中的(?i)使模式不区分大小写,因此not、Not、NOt、NoT等都将匹配。
Series.str.replace Cython化了对re.sub的调用(这使得它比使用apply所能达到的速度更快,因为apply使用apply循环)。
https://stackoverflow.com/questions/33761047
复制相似问题