Tôi cần chạy một báo cáo hàng tháng vào thứ Hai đầu tiên của tháng và tính toán ngày hôm nay với Python. Mã mà tôi có cho đến nay sẽ đi vào một mô -đun trong chương trình ETL của chúng tôi và sẽ xác định xem ngày thực sự là ngày đầu tiên của tháng. Lý tưởng nhất, những gì tôi cần là nếu thứ Hai là thứ Hai đầu tiên của tháng, hãy chạy báo cáo (thực thi = 1) vào ngày này. Nếu không, không chạy bất cứ điều gì (thực thi = 0). Tôi có gì:
# Calculate first Monday of the month # import module(s) from datetime import datetime, date, timedelta today = date.today() # - timedelta(days = 1) datee = datetime.strptime(str(today), "%Y-%m-%d") print(f'Today: {today}') # function finds first Monday of the month given the date passed in "today" def find_first_monday(year, month, day): d = datetime(year, int(month), int(day)) offset = 0-d.weekday() #weekday = 0 means monday if offset < 0: offset+=7 return d+timedelta(offset) # converts datetime object to date first_monday_of_month = find_first_monday(datee.year, datee.month, datee.day).date() # prints the next Monday given the date that is passed as "today" print(f'Today\'s date: {today}') print(f'First Monday of the month date: {first_monday_of_month}') # if first Monday is true, execute = 1, else execute = 0; 1 will execute the next module of code if today == first_monday_of_month: execute = 1 print(execute) else: execute = 0 print(execute)Nó hoạt động giả định ngày trong "hôm nay" không phải sau ngày thứ Hai đầu tiên của tháng. Khi "hôm nay" là sau ngày thứ Hai đầu tiên của tháng, nó sẽ in vào thứ Hai tới.
Lập lịch ETL của chúng tôi cho phép chúng tôi chạy hàng ngày, hàng tuần hoặc hàng tháng. Tôi nghĩ rằng tôi sẽ phải chạy điều này hàng ngày, mặc dù đây là một báo cáo hàng tháng và mô -đun với mã này sẽ xác định xem "hôm nay" có phải là thứ Hai đầu tiên của tháng hay không. Nếu đó không phải là thứ hai đầu tiên, nó sẽ không thực hiện các mô -đun mã tiếp theo (Execute = 0). Tôi không tin rằng điều này thực sự sẽ chạy nếu "hôm nay" là ngày thứ Hai đầu tiên của tháng kể từ khi nó in vào thứ Hai tới cho bất kỳ ngày nào được thông qua trong "Hôm nay".
Tôi dường như không thể tìm thấy câu trả lời tôi cần để đảm bảo rằng nó chỉ tính toán vào thứ Hai đầu tiên của tháng và chỉ chạy báo cáo vào ngày đó. Cảm ơn trước.
Làm thế nào để bạn có được thứ Hai đầu tiên trong tuần ở Python?
Khoa học dữ liệu thực tế bằng cách sử dụng Python, bạn có thể sử dụng mô -đun lịch để có được ngày đầu tiên trong tuần bằng cách sử dụng Python. Mô -đun lịch có chức năng đặc biệt, FirstWeekDay (), trả về cài đặt hiện tại cho ngày trong tuần để bắt đầu mỗi tuần.
Làm thế nào để bạn có được vào thứ Hai tới ở Python?
Làm thế nào để bạn có được thứ Hai đầu tiên trong tuần ở Python?
Khoa học dữ liệu thực tế bằng cách sử dụng Python, bạn có thể sử dụng mô -đun lịch để có được ngày đầu tiên trong tuần bằng cách sử dụng Python. Mô -đun lịch có chức năng đặc biệt, FirstWeekDay (), trả về cài đặt hiện tại cho ngày trong tuần để bắt đầu mỗi tuần.
Làm thế nào để bạn có được vào thứ Hai tới ở Python?
Ví dụ #2:
Tại đây, chúng tôi sẽ tìm thấy thứ Hai đầu tiên của tháng tháng 2 năm 2001.np.busday_offset(‘date’, 0, roll=’forward’, weekmask=’Mon’)
Parameters:
yearMonth = 2001-11-020The array of dates to process.
date = 2017-05-0112017-05-0122001-11-025The array of offsets, which is broadcast with dates.
2001-02-0542001-02-055It takes the below values:
- Ví dụ #3: means to raise an exception for an invalid day.
- Tại đây, chúng tôi sẽ tìm thấy thứ Hai đầu tiên của tháng tháng 11 năm 2020. means to return a NaT (not-a-time) for an invalid day.
- yearMonth = numpy2 and following mean to take the first valid day later in time.
- Làm thế nào để bạn có được thứ Hai đầu tiên của tháng ở Python? and preceding mean to take the first valid day earlier in time.
- Để tìm ngày thứ Hai đầu tiên của một tháng nhất định, chúng tôi sẽ sử dụng mô -đun Numpy, tức là phương thức numpy.busday_offset () trong mô -đun Numpy. means to take the first valid day later in time unless it is across a Month boundary, in which case to take the first valid day earlier in time.
- Làm thế nào để tôi có được ngày đầu tiên của tháng ở Python? means to take the first valid day earlier in time unless it is across a Month boundary, in which case to take the first valid day later in time.
WeekMask: Array cho biết thứ Hai đến Chủ nhật là ngày hợp lệ.array indicating which of Monday through Sunday are valid days.
Trả về (OutArray của DateTime64): Một mảng có hình dạng từ ngày phát sóng và độ lệch với nhau, chứa các ngày với độ lệch được áp dụng.An array with a shape from broadcasting dates and offsets together, containing the dates with offsets applied.
Dưới đây là một số chương trình sử dụng phương thức numpy.busday_offset () để có được thứ Hai đầu tiên của một tháng:
Ví dụ 1:
Trong ví dụ này, chúng tôi sẽ tìm thấy thứ Hai đầu tiên của tháng tháng 5 năm 2017.
Python3
import numpy
yearMonth = '2017-05'
date = 2017-05-0112017-05-0122017-05-013
Các
2017-05-0142001-02-050=2001-02-0522001-02-053
2001-02-0542001-02-055
Output:
2017-05-01Ví dụ #2:
Tại đây, chúng tôi sẽ tìm thấy thứ Hai đầu tiên của tháng tháng 2 năm 2001.
Python3
import numpy
yearMonth = '2017-05'
date = 2017-05-0112017-05-0122017-05-013
2017-05-0142017-05-015=2017-05-0172001-11-025
2017-05-0142001-02-050=2001-02-0522001-02-053
Các
Output:
2001-02-05Ví dụ #2:
Tại đây, chúng tôi sẽ tìm thấy thứ Hai đầu tiên của tháng tháng 2 năm 2001.
Python3
import numpy
yearMonth = '2017-05'
date = 2017-05-0112017-05-0122017-05-013
2017-05-0142017-05-015=2017-05-0172001-11-025
2017-05-0142001-02-050=2001-02-0522001-02-053
2001-02-0542001-02-055
Output:
2001-11-02