python pandas实现获取指定日期所属月的月初月末

 更新时间:2025年12月13日 10:16:19   作者:cy^2  
这篇文章主要为大家详细介绍如何使用Python的Pandas库进行日期格式转换,并演示了如何获取月初、月末及跨月日期的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下

pandas获取指定日期所属月的月初月末

完整代码:

import pandas as pd
from pandas.tseries.offsets import MonthBegin, MonthEnd  
from datetime import datetime as dt
# 日期格式为yyyy-mm-dd
df1 = pd.DataFrame({'date': ['2022-01-01', '2022-02-15', '2022-03-02', '2022-05-31']})
df1['new_date'] = df1['date'].astype('datetime64')

'''
# 日期格式为yyyy-mm-dd hh-mm-ss
f1 = pd.DataFrame({'date': ['2022-01-01 11:10:00', '2022-02-15 12:45:00']})
df1['new_date'] = df1['date'].astype('datetime64').dt.date 
'''

# 本月初:将间隔参数n设置成0时,当仅为月初日期时才能正确的获取当月月初日期,其余日期将获取成下月月初日期
df1['MonthStart'] = df1['new_date'] + MonthBegin(n=1) -  MonthBegin(n=1)

'''
# 方法2
def get_month_start(x):
    return datetime(x.year, x.month, 1)
df1['MonthStart'] = df['new_date'].map(get_month_start)
'''
# 本月末
df1['monthend'] = df1['new_date'] + MonthEnd(n=0) # n默认为1

# 下月月末
df1['last_MonthEnd'] = df1['new_date'] + MonthEnd(n=0) +  MonthEnd(n=1)

print(df1)

结果如下: 

        date   new_date MonthStart   monthend last_MonthEnd
0  2022-01-01 2022-01-01 2022-01-01 2022-01-31    2022-02-28
1  2022-02-15 2022-02-15 2022-02-01 2022-02-28    2022-03-31
2  2022-03-02 2022-03-02 2022-03-01 2022-03-31    2022-04-30
3  2022-05-31 2022-05-31 2022-05-01 2022-05-31    2022-06-30

知识扩展

1.python 获取当前月份月初日期和月末日期

使用time模块的time.localtime()获取当前日期,使用calendar模块calendar.monthrange的来获取指定月份的天数。即可得到月初日期和月末日期,代码如下:

import calendar
import time
day_now = time.localtime()
day_begin = '%d-%02d-01' % (day_now.tm_year, day_now.tm_mon)  # 月初肯定是1号
wday, monthRange = calendar.monthrange(day_now.tm_year, day_now.tm_mon)  # 得到本月的天数 第一返回为月第一日为星期几(0-6), 第二返回为此月天数
day_end = '%d-%02d-%02d' % (day_now.tm_year, day_now.tm_mon, monthRange)
print('月初日期为:',day_begin, '月末日期为:',day_end)
#!/usr/bin/env python
# --*-- coding:utf-8 --*--
import calendar
day_now = '20150222' #给定日期
day_begin = day_now[0:6]+'01' #月初肯定是1号 所以 直接替换 就可以
monthRange = calendar.monthrange(int(day_now[0:3]),int(day_now[4:6]))#得到本月的天数
day_end = day_now[0:6]+str(monthRange[1])
print day_now,'月初日期为:',day_begin, '月末日期为:',day_end

2.pandas计算日期的年月日时分秒,星期,周次

用pandas的read_excel()方法读取excel表数据,将表格中"日期"列转日期格式

import pandas as pd
import numpy as np
import datetime

df = pd.read_excel('./日期问题.xlsx')
# 将日期列转成日期格式
df['日期'] = pd.to_datetime(df['日期'])   

dt模块可轻松获取日期基本属性

# 转年月日格式(字符串文本)
df['年月日'] = df['日期'].apply(lambda x: x.strftime('%Y%m%d'))
df['年']=df['日期'].dt.year  
df['季度']=df['日期'].dt.quarter
df['月']=df['日期'].dt.month
df['日']=df['日期'].dt.day   
df['星期几']=df['日期'].dt.dayofweek
df['周次']=df['日期'].dt.week
df['时']=df['日期'].dt.hour
df['分']=df['日期'].dt.minute
df['秒']=df['日期'].dt.second

3.python 获取月初月末

在数据处理和财务计算等场景,获取一个月的第一天和最后一天是相当常见的需求。这篇文章将教你如何使用 Python 实现获取一个月的月初和月末。我们会一步步来,确保你理解每一个步骤。

整体流程

我们将遵循以下步骤来完成任务:

步骤描述
1导入必要的库
2获取当前时间
3计算月初
4计算月末
5输出结果

步骤详细讲解

1. 导入必要的库

在 Python 中处理日期和时间,我们通常会使用 datetime 模块。这个模块提供了很多有用的类和方法。

import datetime  # 导入datetime模块

2. 获取当前时间

使用 datetime.datetime.now() 方法来获取当前的日期和时间。

now = datetime.datetime.now()  # 获取当前时间

3. 计算月初

计算月初的方式非常简单:将当前的日期替换为该月的第一天,即将日期部分设为 1

month_start = now.replace(day=1)  # 替换为当前月的第一天

4. 计算月末

计算月末的步骤有点复杂,因为每个月的天数不同。我们可以通过将下一月的第一天减去一天来得到当前月的最后一天。

# 获取下一个月的第一天
next_month = (now.replace(day=1) + datetime.timedelta(days=31)).replace(day=1)
# 减去一天,得到当前月的最后一天
month_end = next_month - datetime.timedelta(days=1)

5. 输出结果

最后,我们将月初和月末的结果打印出来。

print(f"本月的月初是: {month_start.strftime('%Y-%m-%d')}")  # 格式化输出月初
print(f"本月的月末是: {month_end.strftime('%Y-%m-%d')}")  # 格式化输出月末

完整代码

结合上述所有步骤,下面是一段完整的 Python 代码:

import datetime  # 导入datetime模块

# 1. 获取当前时间
now = datetime.datetime.now()  # 获取当前时间

# 2. 计算月初
month_start = now.replace(day=1)  # 替换为当前月的第一天

# 3. 计算月末
next_month = (now.replace(day=1) + datetime.timedelta(days=31)).replace(day=1)  # 获取下一个月的第一天
month_end = next_month - datetime.timedelta(days=1)  # 当前月的最后一天

# 4. 输出结果
print(f"本月的月初是: {month_start.strftime('%Y-%m-%d')}")  # 格式化输出月初
print(f"本月的月末是: {month_end.strftime('%Y-%m-%d')}")  # 格式化输出月末

到此这篇关于python pandas实现获取指定日期所属月的月初月末的文章就介绍到这了,更多相关python获取指定日期的月初月末内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】

    Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】

    这篇文章主要介绍了Python数据结构与算法之链表定义与用法,结合具体实例形式较为详细的分析了单链表、循环链表等的定义、使用方法与相关注意事项,需要的朋友可以参考下
    2017-09-09
  • 深入解析如何通过Py4J实现Python与Java交互

    深入解析如何通过Py4J实现Python与Java交互

    Py4J是一个允许Python程序和Java虚拟机(JVM)进行交互的库,提供了调用Java类库和访问Java对象的便利,本文将详细介绍Py4J的核心概念和应用场景,以及如何在Python中调用Java类库的示例
    2025-09-09
  • python中列表对象pop()方法的使用说明

    python中列表对象pop()方法的使用说明

    这篇文章主要介绍了python中列表对象pop()方法的使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python环境下安装PyGame和PyOpenGL的方法

    Python环境下安装PyGame和PyOpenGL的方法

    这篇文章主要介绍了Python环境下安装PyGame和PyOpenGL的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Python实现结构体代码实例

    Python实现结构体代码实例

    这篇文章主要介绍了Python实现结构体代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python循环结构全面解析

    Python循环结构全面解析

    循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随小编一起看看吧
    2025-06-06
  • python实现一个函数版的名片管理系统过程解析

    python实现一个函数版的名片管理系统过程解析

    这篇文章主要介绍了python实现一个函数版的名片管理系统过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python爬虫使用实例wallpaper问题记录

    Python爬虫使用实例wallpaper问题记录

    本文介绍解决中文乱码的方法,以及Python爬虫处理数据、图片URL的技巧,包括使用正则表达式处理字符串、URL替换等,还涉及单线程与多线程的应用场景,如电脑壁纸和手机壁纸爬取,适合进行Web数据抓取和处理的开发者参考
    2024-09-09
  • TensorFlow和keras中GPU使用的设置操作

    TensorFlow和keras中GPU使用的设置操作

    这篇文章主要介绍了TensorFlow和keras中GPU使用的设置操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python文件读取和导包的绝对路径、相对路径详解

    python文件读取和导包的绝对路径、相对路径详解

    每次在读或写文件时,获取脚本文件的绝对路径和相对路径时很容易搞混,下面这篇文章主要给大家介绍了关于python文件读取和导包的绝对路径、相对路径的相关资料,需要的朋友可以参考下
    2022-04-04

最新评论