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获取指定日期的月初月末内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论