如何使用pandas将8位数字格式的日期拆分为年、月、日三个独立字段
pandas拆分8位数字日期为年月日的实现方法
你现有的数据框存储的是8位整数格式的日期,可通过以下几种方法实现拆分:
方法一:转为datetime类型后提取(推荐)
该方法得到的日期字段后续可直接用于时间序列运算,适用性最强:
import pandas as pd # 示例数据(你已有可跳过) x = pd.DataFrame([20210901,20210902, 20210903, 20210904]) # 转为标准datetime格式 x['date'] = pd.to_datetime(x[0].astype(str), format='%Y%m%d') # 单独提取年、月、日列 x['year'] = x['date'].dt.year x['month'] = x['date'].dt.month x['day'] = x['date'].dt.day # 生成[年,月,日]格式的列表列 x['date_list'] = x.apply(lambda row: [row['year'], row['month'], row['day']], axis=1)
方法二:字符串切片拆分
无需转日期格式,直接对字符串按位截取:
date_str = x[0].astype(str) x['year'] = date_str.str[:4].astype(int) x['month'] = date_str.str[4:6].astype(int) x['day'] = date_str.str[6:].astype(int) # 生成列表列 x['date_list'] = x.apply(lambda row: [row['year'], row['month'], row['day']], axis=1)
方法三:数学运算拆分
直接对整数做整除、取模运算拆分:
x['year'] = x[0] // 10000 x['month'] = (x[0] % 10000) // 100 x['day'] = x[0] % 100 # 无需单独生成年月日列,直接得到列表列的简写写法 x['date_list'] = x[0].apply(lambda num: [num//10000, (num%10000)//100, num%100])
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

