Python中如何删除字符串第一个空格及之后的全部内容?
解决方案
实现代码
场景1:日期列是字符串(object/string)类型
直接用pandas内置的字符串处理方法截取第一个空格前的内容即可:
import pandas as pd # 请替换下方示例中的df为你的DataFrame变量名,date_col为你的日期列名 # 方法1:按空格拆分后取第一个元素,写法简单易读 df['date_col'] = df['date_col'].str.split(' ').str[0] # 方法2:正则提取开头的所有非空格字符,容错性更高,异常值不会报错 df['date_col'] = df['date_col'].str.extract(r'^(\S+)', expand=False)
场景2:日期列是datetime64时间类型
不需要转成字符串处理,直接用时间类方法输出对应格式即可:
# 输出为字符串格式的「月/日/年」,自动去掉前导零 df['date_col'] = df['date_col'].dt.strftime('%m/%d/%Y').str.lstrip('0').str.replace('/0', '/') # 如果不需要字符串格式,仅需要纯日期对象,可直接调用dt.date df['date_col'] = df['date_col'].dt.date
列的数据类型要求
- 如果你使用字符串处理方法(split/extract等),需要保证该列是
object或者pandas专属string类型,datetime类型直接调用字符串方法会返回空值。 - 更推荐的处理流程是先把该列转换为datetime类型再做处理,可避免字符串格式不一致(比如多打空格、时间部分格式异常)导致的处理错误,转换示例:
# 原始日期为「月/日/年 时:分」格式的转换写法 df['date_col'] = pd.to_datetime(df['date_col'], format='%m/%d/%Y %H:%M') # 如果你的原始日期是「日/月/年 时:分」的顺序,调整format参数中%m和%d的位置即可
内容的提问来源于stack exchange,提问作者Claie
相关产品推荐
相关产品推荐

