4
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Nếu tôi có một ngày ở định dạng '2016-07-31'
, làm thế nào tôi sẽ biến nó thành '2016-07'
? Tôi đã nhập DateTime
Đã hỏi ngày 2 tháng 2 năm 2018 lúc 0:24Feb 2, 2018 at 0:24
2
Nếu bạn muốn sử dụng
>>> date = '2016-07-31'
>>> date[:-3]
'2016-07'
>>> date[:date.rfind['-']]
'2016-07'
0, bạn có thể phân tích chuỗi với >>> date = '2016-07-31'
>>> date[:-3]
'2016-07'
>>> date[:date.rfind['-']]
'2016-07'
1 và sau đó sử dụng định dạng chuỗi để chỉ in các phần bạn muốn:>>> from datetime import datetime as dt
>>> '{:%Y-%m}'.format[dt.strptime['2016-07-31', '%Y-%m-%d']]
'2016-07'
Mặc dù, như Zeet chỉ ra, nếu bạn biết đầu vào của mình sẽ có dạng 'yyyy-mm-dd' thì đơn giản hơn khi chỉ cắt nó:
>>> date = '2016-07-31'
>>> date[:-3]
'2016-07'
>>> date[:date.rfind['-']]
'2016-07'
Tuy nhiên, sử dụng
>>> date = '2016-07-31'
>>> date[:-3]
'2016-07'
>>> date[:date.rfind['-']]
'2016-07'
1 sẽ giúp dễ dàng hơn nếu bạn muốn hỗ trợ nhiều định dạng hơn một cách chung chung.Đã trả lời ngày 2 tháng 2 năm 2018 lúc 0:34Feb 2, 2018 at 0:34
Ví dụ: tôi nhận được một cột có tên là
>>> date = '2016-07-31'
>>> date[:-3]
'2016-07'
>>> date[:date.rfind['-']]
'2016-07'
3 có danh sách các giá trị '2010-10-09' và tiếp tụcBước đầu tiên: Biến dữ liệu cột này thành loại
0 bằng cách sử dụng turn this column data as type of >>> date = '2016-07-31'
>>> date[:-3]
'2016-07'
>>> date[:date.rfind['-']]
'2016-07'
>>> date = '2016-07-31'
>>> date[:-3]
'2016-07'
>>> date[:date.rfind['-']]
'2016-07'
0 by usingdf['column'] = pd.to_datetime[df['column']]
Bước thứ hai: Sau đó thay đổi kiểu của cột này bằng cách sử dụng then change the style of this column by using
df['column'] = df['column'].dt.strftime['%Y-%m']
# %Y means year[full], four digits [e.g.2021].
# %y means year[short], only two digits [e.g.21].
# %m means month.
Smittie
4196 Huy hiệu bạc10 Huy hiệu đồng6 silver badges10 bronze badges
Đã trả lời ngày 13 tháng 10 năm 2020 lúc 3:22Oct 13, 2020 at 3:22
2
Có một số cách để đi về điều này, hai cách là:
Giả sử ngày của bạn là tất cả các chiều rộng không đổi1 [có nghĩa là mỗi ngày có cùng một số chữ số trong đó] bạn có thể chỉ cần làm
day = day[:6]
Nếu ngày của bạn không có chiều rộng không đổi thì bạn có thể sử dụng ____10 và bạn có thể chỉ cần làm
day = datetime.strptime[day, YOUR_FORMAT] day = day.strftime["%Y-%m"]
Bạn có thể ghép lại với nhau
>>> date = '2016-07-31'
>>> date[:-3]
'2016-07'
>>> date[:date.rfind['-']]
'2016-07'
6 cho dấu thời gian của mình bằng cách xem tài liệu tham khảo DateTime ở đây.Vì ví dụ của bạn cho thấy một tháng không có đệm, rất có khả năng bạn có thể đi với Tùy chọn 1.
1 của bạn thực sự có thể thoát khỏi một ngày chiều rộng không liên tục với điều kiện là năm và tháng luôn đến trước và chúng có chiều rộng không đổi.
Đã trả lời ngày 2 tháng 2 năm 2018 lúc 0:31Feb 2, 2018 at 0:31
Nick Chapmannick ChapmanNick Chapman
4.19823 Huy hiệu bạc39 Huy hiệu đồng23 silver badges39 bronze badges
Định dạng của "2016-07-31" được gọi là ISO 8601 -format, đây là những gì tôi khuyên bạn nên làm.
date_str = "2012-04-21"
wanted_format = datetime.strptime[date_str, '%Y-%m-%d'].strftime["%Y-%m"]
Đã trả lời ngày 2 tháng 2 năm 2018 lúc 0:56Feb 2, 2018 at 0:56
Matt. Strohmatt. StrohMatt. Stroh
8767 Huy hiệu bạc16 Huy hiệu Đồng7 silver badges16 bronze badges
Nếu bạn muốn điều chỉnh số ngày hiện tại từ đối tượng DateTime, thì mã sau có thể giúp
from datetime import date, timedelta
today = date.today[] # datetime.date[2022, 5, 26]
result = today - timedelta[days=today.day] # datetime.date[2022, 4, 30]
Đã trả lời ngày 26 tháng 5 lúc 10:56May 26 at 10:56