如何在Pandas中将指定列内的空格替换为点号
你的代码问题出在这
- 你写的
str.replace('','.')第一个参数是空字符串,不是空格,执行后会在每个字符之间都插入点,完全不符合需求 - 直接全表
apply会处理所有列,你只需要处理指定列,不需要遍历全部列
可行解决方案
单指定列处理
如果你只需要处理Date这一列,直接执行以下代码即可:
df['Date'] = df['Date'].str.replace(' ', '.')
多指定列批量处理
如果你要同时处理多个列,把需要处理的列名放进列表再操作:
# 替换成你实际要处理的列名列表 target_cols = ['Date', '其他需要处理的列名'] df[target_cols] = df[target_cols].apply(lambda col: col.str.replace(' ', '.'))
特殊场景适配
如果存在连续多个空格要替换成单个点的情况,用正则匹配更稳妥:
# \s+ 匹配任意数量的连续空白字符 df['Date'] = df['Date'].str.replace('\s+', '.', regex=True)
示例验证
用你给出的测试数据跑的完整可执行代码:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'Date': ['Q1 2022', 'Q2 2022'], 'id': ['a', 'b'] }) # 执行替换 df['Date'] = df['Date'].str.replace(' ', '.') # 输出结果 print(df)
运行后输出结果和你预期的完全一致:
Date id 0 Q1.2022 a 1 Q2.2022 b
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

