Đã 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?
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 đó ;-].
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
1, nó khá đơn giản. you are already using df['quarter'] = df['date'].dt.quarter
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
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
9for m in range[1, 13]:
print [m-1]//3 + 1,
print
0Phươ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
2Và đầ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
4Tham khảo: Chỉ số thời kỳ Pandas
Đã 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
5Vì 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
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
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
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
1