目录

一.to_datetime()进行日期格式转换

1.参数说明

2.将字符串字段转换为日期类型

二.时间属性访问器对象Series.dt,获取日期数据的年月日星期

1.获取年月日

2.获取星期

3.获取日期所在季度

4.判断日期是否月底年底

三 .to_period()获取统计周期


一.to_datetime()进行日期格式转换

1.参数说明

参数名

说明

arg

要转换的日期时间数据,核心输入。支持字符串、数字(时间戳)、列表、Series、DataFrame 等多种格式。

errors

解析失败时的处理方式

- raise(默认):抛出异常

- coerce:将无效值转为 NaT 

- ignore:保留原字符串不转换

dayfirst

解析日期时是否优先解析 “日”

对类似 10/11/12 的字符串,设为 True 时会解析为 12-11-10(日 / 月 / 年),False 则默认月 / 日 / 年。

就是用来区分10/11/12的10是日还是月的

yearfirst

解析日期时是否优先解析 “年”

对类似 10/11/12 的字符串,设为 True 时会优先按 年/月/日 解析(如 10/11/12 解析为 2010-11-12)。

当日期字符串是 '2010/1/4' 这种形式,由于年份是 4 位数字,pandas 能很清晰地识别出这是年份,所以即使 yearfirst 为 False,也不会影响其正确解析

utc

是否将解析结果转为 UTC 时区

设为 True 时,返回的时间会强制转为 UTC 时间;

若原数据含时区信息,会自动转换。

format

自定义日期解析格式,用于处理非标准格式的字符串。

格式符遵循 strftime 规范,如 %Y-%m-%d %H:%M:%S

exact

是否要求 format 与输入字符串完全匹配

- True(默认):必须严格匹配格式,否则报错

- False:允许格式与字符串部分匹配(如忽略多余字符)

unit

时间戳的单位,用于解析数字类型的时间戳。

支持 s(秒)、ms(毫秒)、us(微秒)、ns(纳秒,默认)。

infer_datetime_format

是否自动推断日期字符串的格式,提升解析速度。

设为 True 时,pandas 会尝试自动识别格式,比 format=None 更快,但仅对常见格式有效。

origin

时间戳的基准时间,用于将数字转为日期。

默认 'unix'1970-01-01,也可指定自定义日期(如 '2000-01-01')。

cache

是否缓存解析结果,提升重复调用时的性能。

默认 True,对大量重复日期字符串解析时更高效。

2.将字符串字段转换为日期类型

import pandas as pd

df = pd.DataFrame({"gmv": [100, 200, 300, 400],
                   "trade_date": ["2025-01-06", "2023-10-31", "2023-12-31", "2023-01-05"]})
df["ymd"] = pd.to_datetime(df["trade_date"])
print(df)
print(df["ymd"].dtype)

        运行结果:

二.时间属性访问器对象Series.dt,获取日期数据的年月日星期

1.获取年月日

import pandas as pd

df = pd.DataFrame({"gmv": [100, 200, 300, 400],
                   "trade_date": ["2025-01-06", "2023-10-31", "2023-12-31", "2023-01-05"]})
df["ymd"] = pd.to_datetime(df["trade_date"])

df["yy"], df["mm"], df["dd"] = df["ymd"].dt.year, df["ymd"].dt.month, df["ymd"].dt.day
print(df)

        运行结果:

2.获取星期

import pandas as pd

df = pd.DataFrame({"gmv": [100, 200, 300, 400],
                   "trade_date": ["2025-01-06", "2023-10-31", "2023-12-31", "2023-01-05"]})
df["ymd"] = pd.to_datetime(df["trade_date"])

df["week"] = df["ymd"].dt.day_name()
print(df)

        运行结果:

3.获取日期所在季度

import pandas as pd

df = pd.DataFrame({"gmv": [100, 200, 300, 400],
                   "trade_date": ["2025-01-06", "2023-10-31", "2023-12-31", "2023-01-05"]})
df["ymd"] = pd.to_datetime(df["trade_date"])

df["quarter"] = df["ymd"].dt.quarter
print(df)

        运行结果:

4.判断日期是否月底年底

import pandas as pd

df = pd.DataFrame({"gmv": [100, 200, 300, 400],
                   "trade_date": ["2025-01-06", "2023-10-31", "2023-12-31", "2023-01-05"]})
df["ymd"] = pd.to_datetime(df["trade_date"])

df["mend"] = df["ymd"].dt.is_month_end
df["yend"] = df["ymd"].dt.is_year_end
print(df)

        运行结果:

三 .to_period()获取统计周期

freq:这是 to_period() 方法最重要的参数,用于指定要转换的时间周期频率

常见的取值如下:

  • "D":按天周期,例如 2024-01-01 会转换为 2024-01-01 这个天的周期。
  • "W":按周周期,通常以周日作为一周的结束,比如日期落在某一周内,就会转换为该周的周期表示。
  • "M":按月周期,像 2024-05-15 会转换为 2024-05。
  • "Q":按季度周期,一年分为四个季度,日期会转换到对应的季度周期,例如 2024Q2 。
  • "A" 或 "Y":按年周期,如 2024-07-20 会转换为 2024 。
import pandas as pd
import numpy as np

df = pd.DataFrame({"gmv": [100, 200, 300, 400],
                   "trade_date": ["2025-01-06", "2023-10-31", "2023-12-31", "2023-01-05"]})
df["ymd"] = pd.to_datetime(df["trade_date"])

df["ystat"] = df["ymd"].dt.to_period("Y")
df["mstat"] = df["ymd"].dt.to_period("M")
df["qstat"] = df["ymd"].dt.to_period("Q")
df["wstat"] = df["ymd"].dt.to_period("W")
print(df)

        运行结果:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐