How To Combine Multiple Columns In A Data Frame To Pandas Datetime Format
I have a pandas data frame with values as below ProcessID1 UserID Date Month Year Time 248 Tony 29 4 2017 23:30:56 436 Jeff 28
Solution 1:
Use to_datetime
with automatic convert column Day,Month,Year
with add time
s converted to_timedelta
:
df['Datetime'] = pd.to_datetime(df.rename(columns={'Date':'Day'})[['Day','Month','Year']]) + \
pd.to_timedelta(df['Time'])
Another solutions are join all column converted to string
s first:
df['Datetime'] = pd.to_datetime(df[['Date','Month','Year', 'Time']]
.astype(str).apply(' '.join, 1), format='%d %m %Y %H:%M:%S')
df['Datetime'] = (pd.to_datetime(df['Year'].astype(str) + '-' +
df['Month'].astype(str) + '-' +
df['Date'].astype(str) + ' ' +
df['Time']))
print(df)ProcessID1UserIDDateMonthYearTimeDatetime0248Tony2942017 23:30:562017-04-29 23:30:561436Jeff2842017 20:02:192017-04-28 20:02:192500Greg452017 11:48:292017-05-04 11:48:29
Last if need remove these columns:
df = df.drop(['Date','Month','Year', 'Time'], axis=1)
print (df)
ProcessID1 UserID Datetime
0 248 Tony 2017-04-29 23:30:56
1 436 Jeff 2017-04-28 20:02:19
2 500 Greg 2017-05-04 11:48:29
Solution 2:
import pandas as pd
You can also do this by using apply()
method:-
df['Datetime']=df[['Year','Month','Date']].astype(str).apply('-'.join,1)+' '+df['Time']
Finally convert 'Datetime' to datetime dtype by using pandas
to_datetime()
method:-
df['Datetime']=pd.to_datetime(df['Datetime'])
Output of df
:
ProcessID1UserIDDateMonthYearTimeDatetime0248Tony2942017 23:30:562017-04-29 23:30:561436Jeff2842017 20:02:192017-04-28 20:02:192500Greg452017 11:48:292017-05-04 11:48:29
Now if you want to remove 'Date','Month','Year' and 'Time' column then use:-
df=df.drop(columns=['Date','Month','Year', 'Time'])
Solution 3:
Concatenate the columns together to a string format and use pd.to_datetime to convert to datetime.
import pandas as pd
import io
txt = """
ProcessID1 UserID Date Month Year Time
248 Tony 29 4 2017 23:30:56
436 Jeff 28 4 2017 20:02:19
500 Greg 4 5 2017 11:48:29
"""
df = pd.read_csv(io.StringIO(txt), sep="[\t ,]+")
df['Datetime'] = pd.to_datetime(df['Date'].astype(str) \
+ '-' + df['Month'].astype(str) \
+ '-' + df['Year'].astype(str) \
+ ' ' + df['Time'],
format='%d-%m-%Y %H:%M:%S')
df
Post a Comment for "How To Combine Multiple Columns In A Data Frame To Pandas Datetime Format"