You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:20:26