用于str.contains创建布尔索引来屏蔽该系列,然后str.replace替换您的子字符串:
In [172]:\ndf = pd.DataFrame({\'raw_parameter_name\':[\'ABCD;MEAN\', \'EFGH;MEAN\', \'1234;MEAN\', \'sdasd;MEAT\']})\ndf\n\nOut[172]:\n raw_parameter_name\n0 ABCD;MEAN\n1 EFGH;MEAN\n2 1234;MEAN\n3 sdasd;MEAT\n\nIn [173]:\ndf.loc[df[\'raw_parameter_name\'].str.contains(\';MEAN$\'), \'raw_parameter_name\'] = df[\'raw_parameter_name\'].str.replace(\'MEAN\', \'X-BAR\')\ndf\n\nOut[173]:\n raw_parameter_name\n0 ABCD;X-BAR\n1 EFGH;X-BAR\n2 1234;X-BAR\n3 sdasd;MEAT\nRun Code Online (Sandbox Code Playgroud)\n\n这里它匹配 substrin\';MEAN\'存在的位置$,是一个终止符号
布尔掩码如下所示:
\n\nIn [176]:\ndf[\'raw_parameter_name\'].str.contains(\';MEAN$\')\n\nOut[176]:\n0 True\n1 True\n2 True\n3 False\nName: raw_parameter_name, dtype: bool\nRun Code Online (Sandbox Code Playgroud)\n\n时间安排
\n\n对于 40,0000 行 df 使用str.replace比使用更快apply:
In [183]:\nimport re\n%timeit df[\'raw_parameter_name\'].apply(lambda x: re.sub(\';MEAN$\',\';X-BAR\',x))\n%timeit df[\'raw_parameter_name\'].str.replace(\'MEAN\', \'X-BAR\')\n\xe2\x80\x8b\n1 loops, best of 3: 1.01 s per loop\n1 loops, best of 3: 687 ms per loop\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
10829 次 |
| 最近记录: |