我有一个pandas dataframe dfdata,它有一个字段" fieldname"包含字符串数据,子字符串条目如"则值)"。我想用"然后值结束'"来替换这些条目。问题是"价值"对于不同的行是不同的,并且字符串包含多个")"。所以str.replace不会工作。我想的可能是带有通配符的re.sub,但是我需要在替换中显示外卡值。我以为我可能需要写一个循环。有人知道这样做的光滑方式吗?我在下面有示例数据和输出。
Example Data:
import pandas as pd
dfdata = pd.DataFrame({'fieldname1': ['Bob', 'Jane'],
'fieldname2': ['Other words when spaghetti then turnip), do this)', 'Different other words when tomato then ketchup)']})
Example Output:
import pandas as pd
dfdata = pd.DataFrame({'fieldname1': ['Bob', 'Jane'],
'fieldname2': ['Other words when spaghetti then turnip end), do this)', 'Different other words when tomato then ketchup end)']})
答案 0 :(得分:2)
IIUC:
In [36]: dfdata['fieldname2'] = \
dfdata['fieldname2'].str.replace(r'(\s*then\s*)(\w+)\)', r'\1\2 end)')
In [37]: dfdata
Out[37]:
fieldname1 fieldname2
0 Bob Other words when spaghetti then turnip end), do this)
1 Jane Different other words when tomato then ketchup end)