[PYTHON] 타임 스탬프 열을 별도의 날짜 및 시간 열로 나누기
PYTHON타임 스탬프 열을 별도의 날짜 및 시간 열로 나누기
나는 1000 개가 넘는 타임 스탬프 (아래)가있는 팬더 데이터 프레임을 가지고 있습니다.
2016-02-22 14:59:44.561776
이 타임 스탬프를 '날짜'와 '시간'의 두 열로 나누는 데 어려움을 겪고 있습니다. 날짜 형식은 그대로 유지할 수 있지만 시간은 CST (밀리 초 포함)로 변환해야합니다.
도와 주셔서 감사합니다
해결법
-
==============================
1.왜 처음부터 이걸하고 싶을지 모르겠지만, 꼭해야한다면 ...
왜 처음부터 이걸하고 싶을지 모르겠지만, 꼭해야한다면 ...
df = pd.DataFrame({'my_timestamp': pd.date_range('2016-1-1 15:00', periods=5)}) >>> df my_timestamp 0 2016-01-01 15:00:00 1 2016-01-02 15:00:00 2 2016-01-03 15:00:00 3 2016-01-04 15:00:00 4 2016-01-05 15:00:00 df['new_date'] = [d.date() for d in df['my_timestamp']] df['new_time'] = [d.time() for d in df['my_timestamp']] >>> df my_timestamp new_date new_time 0 2016-01-01 15:00:00 2016-01-01 15:00:00 1 2016-01-02 15:00:00 2016-01-02 15:00:00 2 2016-01-03 15:00:00 2016-01-03 15:00:00 3 2016-01-04 15:00:00 2016-01-04 15:00:00 4 2016-01-05 15:00:00 2016-01-05 15:00:00
중부 표준시로의 변환은 더 까다 롭습니다. 현재 타임 스탬프가 '인식되지 않음'이라고 가정합니다. 즉, 시간대가 연결되어 있지 않습니까? 그렇지 않다면, 당신은 그들을 어떻게 개종시킬 것으로 기대합니까?
자세한 사항은:
https://docs.python.org/2/library/datetime.html
Python에서 알 수없는 datetime 시간대를 인식시키는 방법
편집하다
두 번 대신 타임 스탬프에서 한 번만 반복하는 다른 방법 :
new_dates, new_times = zip(*[(d.date(), d.time()) for d in df['my_timestamp']]) df = df.assign(new_date=new_dates, new_time=new_times)
-
==============================
2.가장 쉬운 방법은 pandas Series의 dt 속성을 사용하는 것입니다. 귀하의 경우 dt.date 및 dt.time을 사용해야합니다.
가장 쉬운 방법은 pandas Series의 dt 속성을 사용하는 것입니다. 귀하의 경우 dt.date 및 dt.time을 사용해야합니다.
df = pd.DataFrame({'full_date': pd.date_range('2016-1-1 10:00:00.123', periods=10, freq='5H')}) df['date'] = df['full_date'].dt.date df['time'] = df['full_date'].dt.time In [166]: df Out[166]: full_date date time 0 2016-01-01 10:00:00.123 2016-01-01 10:00:00.123000 1 2016-01-01 15:00:00.123 2016-01-01 15:00:00.123000 2 2016-01-01 20:00:00.123 2016-01-01 20:00:00.123000 3 2016-01-02 01:00:00.123 2016-01-02 01:00:00.123000 4 2016-01-02 06:00:00.123 2016-01-02 06:00:00.123000 5 2016-01-02 11:00:00.123 2016-01-02 11:00:00.123000 6 2016-01-02 16:00:00.123 2016-01-02 16:00:00.123000 7 2016-01-02 21:00:00.123 2016-01-02 21:00:00.123000 8 2016-01-03 02:00:00.123 2016-01-03 02:00:00.123000 9 2016-01-03 07:00:00.123 2016-01-03 07:00:00.123000
-
==============================
3.같은 문제가 있었는데 이것이 나를 위해 일했습니다.
같은 문제가 있었는데 이것이 나를 위해 일했습니다.
데이터 집합의 날짜 열을 "날짜"라고 가정합니다.
import pandas as pd df = pd.read_csv(file_path) df['Dates'] = pd.to_datetime(df['date']).dt.date df['Time'] = pd.to_datetime(df['date']).dt.time
그러면 날짜와 날짜가 서로 다른 두 개의 '날짜'와 '시간'이 표시됩니다.
-
==============================
4.타임 스탬프가 이미 팬더 형식 (문자열 아님) 인 경우 :
타임 스탬프가 이미 팬더 형식 (문자열 아님) 인 경우 :
df["date"] = df["timestamp"].date dt["time"] = dt["timestamp"].time
타임 스탬프가 문자열이면 datetime 모듈을 사용하여 구문 분석 할 수 있습니다.
from datetime import datetime data1["timestamp"] = df["timestamp"].apply(lambda x: \ datetime.strptime(x,"%Y-%m-%d %H:%M:%S.%f"))
출처: http://pandas.pydata.org/pandas-docs/stable/timeseries.html
-
==============================
5.타임 스탬프가 문자열이면 datetime 객체로 변환 할 수 있습니다.
타임 스탬프가 문자열이면 datetime 객체로 변환 할 수 있습니다.
from datetime import datetime timestamp = '2016-02-22 14:59:44.561776' dt = datetime.strptime(timestamp, '%Y-%m-%d %H:%M:%S.%f')
그때부터 원하는 형식으로 가져올 수 있습니다.
-
==============================
6.시험
시험
s = '2016-02-22 14:59:44.561776' date,time = s.split()
필요에 따라 시간을 변환하십시오.
시간을 더 나누려면,
hour, minute, second = time.split(':')
-
==============================
7.이 시도:
이 시도:
def time_date(datetime_obj): date_time = datetime_obj.split(' ') time = date_time[1].split('.') return date_time[0], time[0]
from https://stackoverflow.com/questions/35595710/splitting-timestamp-column-into-seperate-date-and-time-columns by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 팬더 데이터 프레임을 동적으로 필터링하기 (0) | 2018.11.15 |
---|---|
[PYTHON] 판다 데이터 프레임에서 선택한 값이 목록에 있는지 확인하는 방법? (0) | 2018.11.15 |
[PYTHON] Cygwin에서 Pip-3.2 설치하기 (0) | 2018.11.15 |
[PYTHON] django ORM을 사용하여 외래 키 필드에서 두 테이블을 어떻게 조인합니까? (0) | 2018.11.15 |
[PYTHON] Numpy를 사용한 대형 데이터 세트 다항식 피팅 (0) | 2018.11.15 |