如何从DataFrame日期列一次性提取日期各部分并生成新DataFrame
一次性提取Pandas日期列中的日、月年组合与时间部分
你可以使用Pandas的str.extract()方法配合正则表达式,一次性捕获所有需要的日期组件,无需逐部分处理。以下是完整实现:
方法一:基础分组提取
import pandas as pd # 构造示例DataFrame df = pd.DataFrame( data=["12/1/2010 8:26", "12/3/2010 8:28", "12/6/2010 8:28", "02/15/2011 8:34", "02/18/2011 8:34", "03/01/2011 8:34"], columns=["_Date"] ) # 一次性提取月、日、年、时间四个分组 extracted = df["_Date"].str.extract(r'(\d+)/(\d+)/(\d+) (\d+:\d+)') # 组装目标DataFrame newDf = pd.DataFrame({ "days": extracted[1], "monthAndYear": extracted[0] + "/" + extracted[2], "time": extracted[3] }) print(newDf)
方法二:命名分组提取(可读性更强)
使用命名分组的正则表达式,避免索引混淆,代码更直观:
import pandas as pd df = pd.DataFrame( data=["12/1/2010 8:26", "12/3/2010 8:28", "12/6/2010 8:28", "02/15/2011 8:34", "02/18/2011 8:34", "03/01/2011 8:34"], columns=["_Date"] ) # 带命名分组的正则提取 extracted = df["_Date"].str.extract(r'(?P<month>\d+)/(?P<days>\d+)/(?P<year>\d+) (?P<time>\d+:\d+)') # 直接通过分组名组装新DataFrame newDf = pd.DataFrame({ "days": extracted["days"], "monthAndYear": extracted["month"] + "/" + extracted["year"], "time": extracted["time"] }) print(newDf)
输出结果
days monthAndYear time 0 1 12/2010 8:26 1 3 12/2010 8:28 2 6 12/2010 8:28 3 15 02/2011 8:34 4 18 02/2011 8:34 5 01 03/2011 8:34
内容的提问来源于stack exchange,提问作者problème0123
相关产品推荐
相关产品推荐

