如何将Pandas DataFrame中相同前缀的日期与时间字符串列合并为datetime列
你可以通过提取列名前缀批量处理所有日期时间列对,不需要用pd.concat,直接拼接字符串后转datetime格式即可,实现代码如下:
import pandas as pd # 提取所有唯一的列前缀(自动识别SH、DEL等所有前缀,无需手动指定) prefixes = set() for col in df.columns: if '_DATE' in col or '_TIME' in col: prefixes.add(col.split('_')[0]) prefixes = list(prefixes) # 批量生成合并后的datetime列 for p in prefixes: df[f'{p}_DATETIME'] = pd.to_datetime(df[f'{p}_DATE'] + ' ' + df[f'{p}_TIME'])
说明
- 代码会自动识别所有符合
前缀_DATE、前缀_TIME命名规则的列对,即使你有十几组甚至更多前缀也不需要修改代码 - 合并后生成的
前缀_DATETIME列数据类型为datetime64,可直接用于后续的时间计算、筛选等操作 - 如果原数据存在空的日期/时间值,转换后对应位置会自动生成
NaT空时间值,不会抛出报错 - 如果你不需要保留原始的DATE、TIME列,可以在代码最后追加删除逻辑:
# 删除原始日期、时间列 drop_cols = [col for col in df.columns if col.endswith(('_DATE', '_TIME'))] df = df.drop(columns=drop_cols)
内容的提问来源于stack exchange,提问作者Saurus
相关产品推荐
相关产品推荐

