如何替换DataFrame列中的字符串(如将[12/12/12]改为[12-12-12])
原代码不生效的原因
你调用的df['tran_date'].replace('/','-')默认为全值匹配模式,仅当单元格内容完全等于/时才会执行替换,无法匹配并替换日期字符串中的/子串;且pandas操作默认返回新对象,未赋值回原列的话原数据不会发生修改。
正确实现方法
- 方案1(推荐,字符串子串替换专用):使用
str.replace方法针对字符串内容做子串匹配替换,完成后赋值回原列
df['tran_date'] = df['tran_date'].str.replace('/', '-', regex=False)
- 方案2(使用
replace方法开启正则匹配):给replace方法加regex=True参数实现子串匹配
df['tran_date'] = df['tran_date'].replace('/', '-', regex=True)
额外注意事项
如果tran_date列数据类型不是字符串,可先转字符串再处理:
df['tran_date'] = df['tran_date'].astype(str).str.replace('/', '-', regex=False)
如果需要保留原数据不修改,可先将处理后的数据赋值给新列,避免覆盖原字段。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

