2017-04-26 28 views
6

tôi tự hỏi nếu có bất kỳ phương pháp hiệu quả hoặc một liner, cho một DatetimeIndex gấu trúc date1, trả lại một DatetimeIndex date2 đó là ngày đầu tiên của tháng tiếp theo?Pandas: ngày chuyển đổi trong tháng cho đến ngày 1 của tháng tiếp theo

Ví dụ: nếu ngày1 là '2011-09-30' thì date2 là '2011-10-01'?

Tôi đã thử này một liner

df.index.to_period("M").to_timestamp('M') 

Nhưng điều này dường như chỉ có thể trở lại "ngày cuối cùng của tháng cùng". Có thể làm một số số học datetime ở đây?

Cảm ơn!

Trả lời

11

Bạn có thể sử dụng pd.offsets.MonthBegin()

In [261]: d = pd.to_datetime(['2011-09-30', '2012-02-28']) 

In [262]: d 
Out[262]: DatetimeIndex(['2011-09-30', '2012-02-28'], dtype='datetime64[ns]', freq=None) 

In [263]: d + pd.offsets.MonthBegin(1) 
Out[263]: DatetimeIndex(['2011-10-01', '2012-03-01'], dtype='datetime64[ns]', freq=None) 

Bạn sẽ tìm thấy rất nhiều ví dụ trong official Pandas docs

+0

Đó là giải pháp tốt đẹp;) – jezrael

+0

@jezrael, cảm ơn bạn! :) – MaxU

+0

@MaxU Tuyệt vời. Điều này có thể giúp tôi tiết kiệm thời gian. Có, tôi mới dùng Python và chỉ bỏ qua phần đó của sổ tay vì tôi không hiểu lắm. Cảm ơn bạn đã cung cấp tài nguyên cho nhiều ví dụ hơn! – yuqli

Các vấn đề liên quan