19.10.15 00:38 작성
·
222
1
안녕하세요. 멋진 강의 잘 듣고 있습니다.
pandas 를 활용해서 날짜 계산을 하고 싶은데.
df = pd.DataFrame({"YYYYMMDD1":['20190930','20190930','20190930','20190930'],
"YYYYMMDD2":['20190930','20190205','20190315','20190420']})
#한달 후 동일일자
df["경과일자"] = (pd.to_datetime(df["YYYYMMDD2"]) + pd.DateOffset(months=1)).dt.strftime('%Y%m%d')
#한달 후의 시작일자
df["경과일자_start"] = (pd.to_datetime(df["YYYYMMDD2"]) + pd.offsets.MonthBegin(1)).dt.strftime('%Y%m%d')
#한달 후의 마지막 일자
df["경과일자_end"] = (pd.to_datetime(df["YYYYMMDD2"]) + pd.offsets.MonthEnd(1)).dt.strftime('%Y%m%d')
result
YYYYMMDD1 | YYYYMMDD2 | 경과일자 | 경과일자_start | 경과일자_end | |
---|---|---|---|---|---|
0 | 20190930 | 20190930 | 20191030 | 20191001 | 20191031 |
1 | 20190930 | 20190205 | 20190305 | 20190301 | 20190228 |
2 | 20190930 | 20190315 | 20190415 | 20190401 | 20190331 |
3 | 20190930 | 20190420 | 20190520 | 20190501 | 20190430 |
컬럼이 밀렸는데요... ㅜㅜ
마지막 컬럼상 날짜(경과일자_end)가 20191031은 제가 원하는 결과이고
그 다음 3개의 값은 20190331, 20190430, 20190531 의 결과값을 원합니다.
어떻게 하면 직관적으로 위의 작업이 가능할까요?
감사합니다. ~~~
답변 2
0
0
2019. 10. 15. 12:06
안녕하세요.
제가 질문을 제대로 이해한건지 잘 모르겠는데, 아래 링크를 참고해서 date_range의 periods와 freq를 사용해 보시는게 어떨까 싶어요.
감사합니다.
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.date_range.html