다음과 같은 데이터 프레임이 있습니다 ...
Date Time Meridiem Day
80 01-05 9:35:00 AM Tuesday
81 01-05 9:40:00 AM Tuesday
82 01-05 9:45:00 AM Tuesday
83 01-05 9:50:00 AM Tuesday
84 01-05 9:55:00 AM Tuesday
... ... ... ... ...
222020 11-30 3:50:00 PM Monday
222021 11-30 3:55:00 PM Monday
222022 11-30 4:00:00 PM Monday
222023 11-30 4:05:00 PM Monday
222024 11-30 4:10:00 PM Monday
그러나 그들은 datetime 객체 가 아닙니다 ...
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 221945 entries, 80 to 222024
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date 221945 non-null object
1 Time 221945 non-null object
2 Meridiem 221945 non-null object
3 Day 221945 non-null object
dtypes: object(4)
이 데이터 프레임의 '연도'열을 추가해야합니다. 데이터는 순서대로 정리되어 있으며 각 행은 2010-01-05부터 2020-11-30 (약 11 년)까지 오전 9시 35 분부터 오후 4시 15 분까지 (영업일 만) 5 분 간격입니다.
연도 열을 추가하는 가장 쉬운 방법은 무엇입니까? 나는 그해의 마지막 날의 행 인덱스를 수동으로 찾고 연도를 11 개 항목으로 추가 할 수 있다고 가정하지만 더 쉬운 방법이 있는지 알고 싶습니까?
True
행을 연도의 변경으로 식별 하고 누적 합계를 취할 수 있습니다.
(df['Date'].str[0:2] == '01')
1 월을 식별하고 반환 True
(df['Date'].str[0:2] != df['Date'].shift().str[0:2]))
1 년에 1 True
개만 반환하도록 매월 첫 번째 행을 반환 True
하므로 cumsum()
2009를 추가하고 2009를 추가하여 첫 해에 2009 + 1 = 2010, 두 번째 해에 2011 등을 얻을 수 있습니다.df['Year'] = ((df['Date'].str[0:2] == '01') &
(df['Date'].str[0:2] != df['Date'].shift().str[0:2])).cumsum() + 2009
df
Out[1]:
Date Time Meridiem Day Year
80 01-05 9:35:00 AM Tuesday 2010
81 01-05 9:40:00 AM Tuesday 2010
82 01-05 9:45:00 AM Tuesday 2010
83 01-05 9:50:00 AM Tuesday 2010
84 01-05 9:55:00 AM Tuesday 2010
222020 11-30 3:50:00 PM Monday 2010
222021 11-30 3:55:00 PM Monday 2010
222022 11-30 4:00:00 PM Monday 2010
222023 11-30 4:05:00 PM Monday 2010
222024 11-30 4:10:00 PM Monday 2010
80 01-05 9:35:00 AM Tuesday 2011
81 01-05 9:40:00 AM Tuesday 2011
82 01-05 9:45:00 AM Tuesday 2011
83 01-05 9:50:00 AM Tuesday 2011
84 01-05 9:55:00 AM Tuesday 2011
222020 11-30 3:50:00 PM Monday 2011
222021 11-30 3:55:00 PM Monday 2011
222022 11-30 4:00:00 PM Monday 2011
222023 11-30 4:05:00 PM Monday 2011
222024 11-30 4:10:00 PM Monday 2011
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다