PySpark中拆分timestamp_value字段提取UTC值至新列问题
解决方法
这里提供三种可行的方案,按需选择:
方法1:字符串分割(适合仅含+时区的场景)
直接从右侧按+分割一次,拆分出UTC部分:
import pandas as pd # 示例DataFrame df = pd.DataFrame({ 'machine': [1,2,3], 'timestamp_value': ['2022-01-06T07:47:37.319+0000']*3 }) # 拆分列 df[['timestamp_value', 'utc']] = df['timestamp_value'].str.rsplit('+', n=1, expand=True)
方法2:正则表达式(通用场景,支持+/-时区)
用正则匹配末尾的时区标识,提取后再清理原字段:
# 提取UTC列 df['utc'] = df['timestamp_value'].str.extract(r'([+-]\d{4})$') # 移除原字段中的UTC部分 df['timestamp_value'] = df['timestamp_value'].str.replace(r'[+-]\d{4}$', '', regex=True)
正则说明:([+-]\d{4})$表示匹配字符串末尾的+或-开头的四位数字,确保准确提取时区信息。
方法3:利用datetime类型处理(规范时间场景)
将字符串转为带时区的datetime类型,再提取时区并处理原字段:
# 转为带时区的datetime df['timestamp_value'] = pd.to_datetime(df['timestamp_value']) # 提取时区为字符串格式 df['utc'] = df['timestamp_value'].dt.tz.strftime('%z') # 移除原字段的时区信息并转为字符串 df['timestamp_value'] = df['timestamp_value'].dt.tz_localize(None).astype(str)
内容的提问来源于stack exchange,提问作者Gaaaa
相关产品推荐
相关产品推荐

