如何用DataFrame另一列子串修剪目标列字符串?指定replace操作可行吗?
问题解答
不行,你写的这段代码达不到预期效果。
原因是pd.Series.replace()的逻辑是:如果传入另一个Series作为匹配规则,它会把这个Series里的所有值当成全局替换项,也就是会把string列中所有出现substring列里任意值的内容都替换为空,而不是按行对应替换每行的子串。
要实现按行对应去除子串的需求,你可以用apply方法逐行处理:
import pandas as pd df = pd.DataFrame({ "string": ["abc", "def", "ghi"], "substring": ["bc", "e", "ghi"] }) # 正确的按行替换方式 df['string'] = df.apply(lambda row: row['string'].replace(row['substring'], ''), axis=1)
运行后得到的结果就是你期望的:
| string | substring |
|---|---|
| a | bc |
| df | e |
| ghi |
内容的提问来源于stack exchange,提问作者Blob
相关产品推荐
相关产品推荐

