python pandas實現(xiàn)獲取指定日期所屬月的月初月末
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
'''
# 本月初:將間隔參數(shù)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的來獲取指定月份的天數(shù)。即可得到月初日期和月末日期,代碼如下:
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) # 得到本月的天數(shù) 第一返回為月第一日為星期幾(0-6), 第二返回為此月天數(shù)
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]))#得到本月的天數(shù) day_end = day_now[0:6]+str(monthRange[1]) print day_now,'月初日期為:',day_begin, '月末日期為:',day_end
2.pandas計算日期的年月日時分秒,星期,周次
用pandas的read_excel()方法讀取excel表數(shù)據(jù),將表格中"日期"列轉日期格式
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 獲取月初月末
在數(shù)據(jù)處理和財務計算等場景,獲取一個月的第一天和最后一天是相當常見的需求。這篇文章將教你如何使用 Python 實現(xiàn)獲取一個月的月初和月末。我們會一步步來,確保你理解每一個步驟。
整體流程
我們將遵循以下步驟來完成任務:
| 步驟 | 描述 |
|---|---|
| 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. 計算月末
計算月末的步驟有點復雜,因為每個月的天數(shù)不同。我們可以通過將下一月的第一天減去一天來得到當前月的最后一天。
# 獲取下一個月的第一天 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實現(xiàn)獲取指定日期所屬月的月初月末的文章就介紹到這了,更多相關python獲取指定日期的月初月末內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python神經網絡之批量學習tf.train.batch函數(shù)示例
這篇文章主要為大家介紹了python神經網絡之批量學習tf.train.batch函數(shù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
python使用openCV遍歷文件夾里所有視頻文件并保存成圖片
這篇文章主要介紹了python使用openCV遍歷文件夾里所有視頻文件并保存成圖片,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧2020-01-01

