Hướng dẫn get fiscal quarter from date python - lấy quý tài chính từ ngày python

Đã hỏi 13 năm, 2 tháng trước 13 years, 2 months ago

Đã xem 158k lần 158k times

Chắc chắn tôi có thể tự viết cái này, nhưng trước khi tôi phát minh lại bánh xe có chức năng đã làm điều này không?

Hướng dẫn get fiscal quarter from date python - lấy quý tài chính từ ngày python

Martineau

Huy hiệu vàng 116K2525 gold badges161 silver badges288 bronze badges

Hỏi ngày 10 tháng 9 năm 2009 lúc 15:54Sep 10, 2009 at 15:54

Jason Christajason ChristaJason Christa

11.9K14 Huy hiệu vàng57 Huy hiệu bạc85 Huy hiệu Đồng14 gold badges57 silver badges85 bronze badges

1

Đưa ra một ví dụ

import datetime as dt
import pandas as pd

quarter = pd.Timestamp(dt.date(2016, 2, 29)).quarter
assert quarter == 1
4 của DateTime.Date,
import datetime as dt
import pandas as pd

quarter = pd.Timestamp(dt.date(2016, 2, 29)).quarter
assert quarter == 1
5 sẽ cung cấp cho bạn quý (0 trong quý đầu tiên, 1 cho quý thứ hai, v.v.-thêm 1 nếu bạn cần đếm từ 1 thay thế ;-).


Ban đầu là hai câu trả lời, được tăng lên và thậm chí được chấp nhận ban đầu (cả hai hiện đang bị xóa), đã bị lỗi - không thực hiện

import datetime as dt
import pandas as pd

quarter = pd.Timestamp(dt.date(2016, 2, 29)).quarter
assert quarter == 1
6 trước khi phân chia và chia cho 4 thay vì 3. Vì
import datetime as dt
import pandas as pd

quarter = pd.Timestamp(dt.date(2016, 2, 29)).quarter
assert quarter == 1
7 đi 1 đến 12, thật dễ dàng để kiểm tra những gì Công thức là đúng:

for m in range(1, 13):
  print m//4 + 1,
print

Cung cấp

import datetime as dt
import pandas as pd

quarter = pd.Timestamp(dt.date(2016, 2, 29)).quarter
assert quarter == 1
8-Hai quý bốn tháng và một tháng một (EEP).

for m in range(1, 13):
  print (m-1)//3 + 1,
print

Cung cấp cho

import datetime as dt
import pandas as pd

quarter = pd.Timestamp(dt.date(2016, 2, 29)).quarter
assert quarter == 1
9-bây giờ không phải là điều này rất thích hợp với bạn?-)

Điều này chứng tỏ rằng câu hỏi được bảo hành tốt, tôi nghĩ vậy ;-).

Tôi không nghĩ rằng mô-đun DateTime nhất thiết phải có mọi chức năng lịch hữu ích có thể, nhưng tôi biết rằng tôi duy trì một (được thử nghiệm tốt ;-)

df['quarter'] = df['date'].dt.quarter
0 cho việc sử dụng các dự án (và người khác) của tôi tại nơi Các chức năng nhỏ để thực hiện tất cả các tính toán lịch này-một số là phức tạp, một số đơn giản, nhưng không có lý do gì để thực hiện nhiều lần (ngay cả công việc đơn giản) hoặc các lỗi rủi ro trong các tính toán đó ;-).

Hướng dẫn get fiscal quarter from date python - lấy quý tài chính từ ngày python

Fedorqui

Phim thương hiệu vàng 262K100530 Huy hiệu bạc 584100 gold badges530 silver badges584 bronze badges

Đã trả lời ngày 10 tháng 9 năm 2009 lúc 16:02Sep 10, 2009 at 16:02

Alex Martellialex MartelliAlex Martelli

830K165 Huy hiệu vàng1205 Huy hiệu bạc1385 Huy hiệu Đồng165 gold badges1205 silver badges1385 bronze badges

9

Nếu bạn đã sử dụng

df['quarter'] = df['date'].dt.quarter
1, nó khá đơn giản. you are already using
df['quarter'] = df['date'].dt.quarter
1, it's quite simple.

import datetime as dt
import pandas as pd

quarter = pd.Timestamp(dt.date(2016, 2, 29)).quarter
assert quarter == 1

Nếu bạn có cột

df['quarter'] = df['date'].dt.quarter
2 trong DataFrame, bạn có thể dễ dàng tạo cột
df['quarter'] = df['date'].dt.quarter
3 mới:

df['quarter'] = df['date'].dt.quarter

Đã trả lời ngày 29 tháng 2 năm 2016 lúc 3:42Feb 29, 2016 at 3:42

2

Tôi sẽ đề xuất một giải pháp sạch hơn khác. Nếu X là một ví dụ

df['quarter'] = df['date'].dt.quarter
4, thì quý là:

import math
Q=math.ceil(X.month/3.)

Cải lên phải được nhập từ mô -đun toán học vì nó không thể được truy cập trực tiếp.

Đã trả lời ngày 13 tháng 1 năm 2011 lúc 20:34Jan 13, 2011 at 20:34

4

Đối với bất kỳ ai cố gắng để có được một phần tư của năm tài chính, có thể khác với năm dương lịch, tôi đã viết một mô -đun Python để làm điều này.

Cài đặt rất đơn giản. Chỉ cần chạy:

$ pip install fiscalyear

Không có sự phụ thuộc, và

df['quarter'] = df['date'].dt.quarter
5 nên hoạt động cho cả Python 2 và 3.

Về cơ bản, đây là một trình bao bọc xung quanh mô-đun DateTime tích hợp, vì vậy bất kỳ lệnh

df['quarter'] = df['date'].dt.quarter
6 nào bạn đã quen thuộc sẽ hoạt động. Đây là bản demo:

>>> from fiscalyear import *
>>> a = FiscalDate.today()
>>> a
FiscalDate(2017, 5, 6)
>>> a.fiscal_year
2017
>>> a.quarter
3
>>> b = FiscalYear(2017)
>>> b.start
FiscalDateTime(2016, 10, 1, 0, 0)
>>> b.end
FiscalDateTime(2017, 9, 30, 23, 59, 59)
>>> b.q3
FiscalQuarter(2017, 3)
>>> b.q3.start
FiscalDateTime(2017, 4, 1, 0, 0)
>>> b.q3.end
FiscalDateTime(2017, 6, 30, 23, 59, 59)

df['quarter'] = df['date'].dt.quarter
5 được lưu trữ trên GitHub và Pypi. Tài liệu có thể được tìm thấy tại Read the Docs. Nếu bạn đang tìm kiếm bất kỳ tính năng nào mà hiện tại nó không có, hãy cho tôi biết!

Đã trả lời ngày 6 tháng 5 năm 2017 lúc 18:13May 6, 2017 at 18:13

Adam Stewartadam StewartAdam Stewart

1.8121 Huy hiệu vàng15 Huy hiệu bạc14 Huy hiệu đồng1 gold badge15 silver badges14 bronze badges

Điều này rất đơn giản và hoạt động trong Python3:

from datetime import datetime

# Get current date-time.
now = datetime.now()

# Determine which quarter of the year is now. Returns q1, q2, q3 or q4.
quarter_of_the_year = f'q{(now.month-1)//3+1}'

Đã trả lời ngày 28 tháng 11 năm 2019 lúc 10:46Nov 28, 2019 at 10:46

Hướng dẫn get fiscal quarter from date python - lấy quý tài chính từ ngày python

JavdomgomjavdomgomJavDomGom

7819 Huy hiệu bạc15 Huy hiệu Đồng9 silver badges15 bronze badges

0

Nếu

df['quarter'] = df['date'].dt.quarter
8 là số tháng ...

import math
math.ceil(float(m) / 3)

Đã trả lời ngày 25 tháng 2 năm 2015 lúc 21:49Feb 25, 2015 at 21:49

Garbanziogbanziogarbanzio

8261 Huy hiệu vàng7 Huy hiệu bạc1 gold badge7 silver badges10 bronze badges

1

Phương pháp này hoạt động cho bất kỳ ánh xạ nào:

month2quarter = {
        1:1,2:1,3:1,
        4:2,5:2,6:2,
        7:3,8:3,9:3,
        10:4,11:4,12:4,
    }.get

Chúng tôi vừa tạo một hàm

df['quarter'] = df['date'].dt.quarter
9

for m in range(1, 13):
  print (m-1)//3 + 1,
print
0

Phương pháp này cũng không được chứng minh

for m in range(1, 13):
  print (m-1)//3 + 1,
print
1

Đã trả lời ngày 6 tháng 12 năm 2018 lúc 10:32Dec 6, 2018 at 10:32

Uri Gorenuri GorenUri Goren

12.9k6 Huy hiệu vàng55 Huy hiệu bạc106 Huy hiệu Đồng6 gold badges55 silver badges106 bronze badges

Dưới đây là một ví dụ về một hàm có được đối tượng DateTime.DateTime và trả về một chuỗi duy nhất cho mỗi quý:

for m in range(1, 13):
  print (m-1)//3 + 1,
print
2

Và đầu ra là:

for m in range(1, 13):
  print (m-1)//3 + 1,
print
3

Đã trả lời ngày 14 tháng 2 năm 2019 lúc 14:07Feb 14, 2019 at 14:07

Roei Bahumiroei BahumiRoei Bahumi

3.1032 huy hiệu vàng18 Huy hiệu bạc19 Huy hiệu đồng2 gold badges18 silver badges19 bronze badges

Đối với những người đang tìm kiếm dữ liệu quý tài chính năm, sử dụng gấu trúc,

for m in range(1, 13):
  print (m-1)//3 + 1,
print
4

Tham khảo: Chỉ số thời kỳ Pandas

Hướng dẫn get fiscal quarter from date python - lấy quý tài chính từ ngày python

Đã trả lời ngày 6 tháng 9 năm 2018 lúc 5:50Sep 6, 2018 at 5:50

Siddaram Hsiddaram hSiddaram H

1.06612 Huy hiệu bạc16 Huy hiệu đồng12 silver badges16 bronze badges

Đây là một câu hỏi cũ nhưng vẫn đáng để thảo luận.

Đây là giải pháp của tôi, sử dụng mô -đun DateUtil tuyệt vời.

for m in range(1, 13):
  print (m-1)//3 + 1,
print
5

Vì vậy,

import math
Q=math.ceil(X.month/3.)
0 là ngày đầu tiên của quý và
import math
Q=math.ceil(X.month/3.)
1 là ngày cuối cùng của quý (được tính bằng cách tìm ngày đầu tiên của quý tiếp theo, trừ một ngày).

Đã trả lời ngày 7 tháng 12 năm 2012 lúc 16:21Dec 7, 2012 at 16:21

MikehossmikehossMikeHoss

1.4574 Huy hiệu vàng18 Huy hiệu bạc35 Huy hiệu Đồng4 gold badges18 silver badges35 bronze badges

Tôi đã thử giải pháp với x // 3+1 và x // 4+1, chúng tôi nhận được một phần tư không chính xác trong cả hai trường hợp. Câu trả lời đúng là như thế này

for m in range(1, 13):
  print (m-1)//3 + 1,
print
6

Đã trả lời ngày 3 tháng 4 năm 2021 lúc 15:48Apr 3, 2021 at 15:48

DeepadeepaDeepa

Huy hiệu 111 Đồng1 bronze badge

for m in range(1, 13):
  print (m-1)//3 + 1,
print
7

Đã trả lời ngày 21 tháng 5 năm 2021 lúc 11:42May 21, 2021 at 11:42

Hướng dẫn get fiscal quarter from date python - lấy quý tài chính từ ngày python

SEENU SSEENU sSeenu S

3.2516 huy hiệu vàng30 huy hiệu bạc45 Huy hiệu đồng6 gold badges30 silver badges45 bronze badges

Hmmm vì vậy tính toán có thể sai, đây là phiên bản tốt hơn (chỉ vì lợi ích của nó)

for m in range(1, 13):
  print (m-1)//3 + 1,
print
8

Đã trả lời ngày 12 tháng 11 năm 2009 lúc 14:55Nov 12, 2009 at 14:55

Anurag uniyalanurag uniyalAnurag Uniyal

83,8K39 Huy hiệu vàng170 Huy hiệu bạc216 Huy hiệu đồng39 gold badges170 silver badges216 bronze badges

5

Dưới đây là một giải pháp dài dòng, nhưng cũng có thể đọc được sẽ hoạt động cho các trường hợp DateTime và Date

for m in range(1, 13):
  print (m-1)//3 + 1,
print
9

Đã trả lời ngày 7 tháng 9 năm 2017 lúc 12:35Sep 7, 2017 at 12:35

IgniteFlowigniteFlowigniteflow

8.11610 Huy hiệu vàng37 Huy hiệu bạc46 Huy hiệu đồng10 gold badges37 silver badges46 bronze badges

Sử dụng từ điển, bạn có thể thực hiện nó bằng cách

import datetime as dt
import pandas as pd

quarter = pd.Timestamp(dt.date(2016, 2, 29)).quarter
assert quarter == 1
0

Đã trả lời ngày 26 tháng 3 năm 2019 lúc 16:52Mar 26, 2019 at 16:52

Hướng dẫn get fiscal quarter from date python - lấy quý tài chính từ ngày python

LEDLEDLed

59420 Huy hiệu bạc39 Huy hiệu đồng20 silver badges39 bronze badges

import datetime as dt
import pandas as pd

quarter = pd.Timestamp(dt.date(2016, 2, 29)).quarter
assert quarter == 1
1

Đã trả lời ngày 27 tháng 10 năm 2020 lúc 6:10Oct 27, 2020 at 6:10

2

Một giải pháp được xem xét lại bằng cách sử dụng công thức @alex Martelli và tạo ra một chức năng nhanh chóng như câu hỏi đặt ra.

import datetime as dt
import pandas as pd

quarter = pd.Timestamp(dt.date(2016, 2, 29)).quarter
assert quarter == 1
2

Đã trả lời ngày 18 tháng 11 năm 2021 lúc 7:17Nov 18, 2021 at 7:17

Hướng dẫn get fiscal quarter from date python - lấy quý tài chính từ ngày python

Federico Baùfederico BaùFederico Baù

4.6554 Huy hiệu vàng24 Huy hiệu bạc32 Huy hiệu Đồng4 gold badges24 silver badges32 bronze badges

import datetime as dt
import pandas as pd

quarter = pd.Timestamp(dt.date(2016, 2, 29)).quarter
assert quarter == 1
3

Đã trả lời ngày 2 tháng 6 lúc 10:16Jun 2 at 10:16

Hướng dẫn get fiscal quarter from date python - lấy quý tài chính từ ngày python

1