[PYTHON] Python pandas를 사용하여 날짜 및 시간 열 결합
PYTHONPython pandas를 사용하여 날짜 및 시간 열 결합
다음 열과 팬더 데이터 프레임이 있습니다.
Date Time
01-06-2013 23:00:00
02-06-2013 01:00:00
02-06-2013 21:00:00
02-06-2013 22:00:00
02-06-2013 23:00:00
03-06-2013 01:00:00
03-06-2013 21:00:00
03-06-2013 22:00:00
03-06-2013 23:00:00
04-06-2013 01:00:00
다음 데이터를 얻기 위해 [날짜]와 데이터 [ '시간'] 데이터를 어떻게 결합합니까? pd.to_datetime을 사용하여 수행하는 방법이 있습니까?
Date
01-06-2013 23:00:00
02-06-2013 01:00:00
02-06-2013 21:00:00
02-06-2013 22:00:00
02-06-2013 23:00:00
03-06-2013 01:00:00
03-06-2013 21:00:00
03-06-2013 22:00:00
03-06-2013 23:00:00
04-06-2013 01:00:00
해결법
-
==============================
1.예를 들어 직접 읽으 셨을 수도 있습니다. parse_dates = [[ 'Date', 'Time']]을 사용하여 read_csv를 사용하는 경우.
예를 들어 직접 읽으 셨을 수도 있습니다. parse_dates = [[ 'Date', 'Time']]을 사용하여 read_csv를 사용하는 경우.
이들은 단지 문자열이라고 가정하면 to_datetime을 적용 할 수 있도록 공백을 사용하여 간단히 추가 할 수 있습니다.
In [11]: df['Date'] + ' ' + df['Time'] Out[11]: 0 01-06-2013 23:00:00 1 02-06-2013 01:00:00 2 02-06-2013 21:00:00 3 02-06-2013 22:00:00 4 02-06-2013 23:00:00 5 03-06-2013 01:00:00 6 03-06-2013 21:00:00 7 03-06-2013 22:00:00 8 03-06-2013 23:00:00 9 04-06-2013 01:00:00 dtype: object In [12]: pd.to_datetime(df['Date'] + ' ' + df['Time']) Out[12]: 0 2013-01-06 23:00:00 1 2013-02-06 01:00:00 2 2013-02-06 21:00:00 3 2013-02-06 22:00:00 4 2013-02-06 23:00:00 5 2013-03-06 01:00:00 6 2013-03-06 21:00:00 7 2013-03-06 22:00:00 8 2013-03-06 23:00:00 9 2013-04-06 01:00:00 dtype: datetime64[ns]
참고 : 놀랍게도 (나를 위해) NaN이 NaT로 변환되면서 제대로 작동하지만 전환 인수를 사용하는 것이 걱정됩니다.
-
==============================
2.허용되는 응답은 데이터 유형 문자열 인 열에 적용됩니다. 완전성을 위해 : 열의 데이터 유형이 날짜와 시간 일 때이를 수행하는 방법을 검색 할 때이 질문을 접하게됩니다.
허용되는 응답은 데이터 유형 문자열 인 열에 적용됩니다. 완전성을 위해 : 열의 데이터 유형이 날짜와 시간 일 때이를 수행하는 방법을 검색 할 때이 질문을 접하게됩니다.
df.apply(lambda r : pd.datetime.combine(r['date_column_name'],r['time_column_name']),1)
-
==============================
3.나는 jka.ne에 대한 논평을하기에 충분한 명성이 없다.
나는 jka.ne에 대한 논평을하기에 충분한 명성이 없다.
나는 그것이 작동하도록 jka.ne의 라인을 수정해야만했다 :
df.apply(lambda r : pd.datetime.combine(r['date_column_name'],r['time_column_name']).time(),1)
이것은 다른 사람들을 도울 수 있습니다.
또한, 나는 combine 대신 replace를 사용하여 다른 접근법을 테스트했다.
def combine_date_time(df, datecol, timecol): return df.apply(lambda row: row[datecol].replace( hour=row[timecol].hour, minute=row[timecol].minute), axis=1)
이는 OP의 경우 다음과 같습니다.
combine_date_time(df, 'Date', 'Time')
비교적 큰 데이터 세트 (> 500.000 행)에 대해 두 방법 모두 시간을 잰 적이 있고 둘 다 비슷한 런타임을 사용하지만 결합을 사용하는 것이 더 빠릅니다 (조합의 경우 대체는 59 초).
-
==============================
4.이 기능을 사용하여 날짜와 시간을 동일한 데이터 프레임 열에 병합 할 수 있습니다.
이 기능을 사용하여 날짜와 시간을 동일한 데이터 프레임 열에 병합 할 수 있습니다.
import pandas as pd data_file = 'data.csv' #path of your file
병합 된 열이있는 .csv 파일 읽기 Date_Time :
data = pd.read_csv(data_file, parse_dates=[['Date', 'Time']])
이 행을 사용하여 다른 두 열도 유지할 수 있습니다.
data.set_index(['Date', 'Time'], drop=False)
-
==============================
5.유형이 다른 경우 (datetime 및 timestamp 또는 str) 열을 형 변환하고 to_datetime을 사용할 수 있습니다.
유형이 다른 경우 (datetime 및 timestamp 또는 str) 열을 형 변환하고 to_datetime을 사용할 수 있습니다.
df.loc[:,'Date'] = pd.to_datetime(df.Date.astype(str)+' '+df.Time.astype(str))
결과 :
0 2013-01-06 23:00:00 1 2013-02-06 01:00:00 2 2013-02-06 21:00:00 3 2013-02-06 22:00:00 4 2013-02-06 23:00:00 5 2013-03-06 01:00:00 6 2013-03-06 21:00:00 7 2013-03-06 22:00:00 8 2013-03-06 23:00:00 9 2013-04-06 01:00:00
베스트,
-
==============================
6.대답은 실제로 열 유형이 무엇인지에 달려 있습니다. 제 경우에는 날짜와 시간이있었습니다.
대답은 실제로 열 유형이 무엇인지에 달려 있습니다. 제 경우에는 날짜와 시간이있었습니다.
> df[['Date','Time']].dtypes Date datetime64[ns] Time timedelta64[ns]
이것이 사실이라면 다음과 같이 열을 추가하면됩니다.
> df['Date'] + df['Time']
-
==============================
7.결합 기능을 사용하십시오.
결합 기능을 사용하십시오.
datetime.datetime.combine(date, time)
-
==============================
8.datetime 및 timedelta 객체를 결합하여 문자열 연결없이 datetime으로 변환 할 수도 있습니다. pd.DataFrame.pop과 함께 소스 시리즈를 동시에 제거 할 수 있습니다.
datetime 및 timedelta 객체를 결합하여 문자열 연결없이 datetime으로 변환 할 수도 있습니다. pd.DataFrame.pop과 함께 소스 시리즈를 동시에 제거 할 수 있습니다.
df['DateTime'] = pd.to_datetime(df.pop('Date')) + pd.to_timedelta(df.pop('Time')) print(df) DateTime 0 2013-01-06 23:00:00 1 2013-02-06 01:00:00 2 2013-02-06 21:00:00 3 2013-02-06 22:00:00 4 2013-02-06 23:00:00 5 2013-03-06 01:00:00 6 2013-03-06 21:00:00 7 2013-03-06 22:00:00 8 2013-03-06 23:00:00 9 2013-04-06 01:00:00 print(df.dtypes) DateTime datetime64[ns] dtype: object
-
==============================
9.먼저 적절한 데이터 유형을 갖추 었는지 확인하십시오.
먼저 적절한 데이터 유형을 갖추 었는지 확인하십시오.
df["Date"] = pd.to_datetime(df["Date"]) df["Time"] = pd.to_timedelta(df["Time"])
그런 다음 쉽게 결합 할 수 있습니다.
df["DateTime"] = df["Date"] + df["Time"]
from https://stackoverflow.com/questions/17978092/combine-date-and-time-columns-using-python-pandas by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Pyspark : 행으로 여러 배열 열을 분할 (0) | 2018.10.07 |
---|---|
[PYTHON] 다양한 깊이의 멀티 레벨 defaultdict? (0) | 2018.10.07 |
[PYTHON] urllib.urlopen () 다음에 close ()를 호출해야합니까? (0) | 2018.10.07 |
[PYTHON] 후행 쉼표가 목록에서 허용되는 이유는 무엇입니까? (0) | 2018.10.07 |
[PYTHON] 파이썬 URLLib / URLLib2 POST (0) | 2018.10.07 |