如何将DataFrame中的多列组合为Pandas日期时间

i7uaboj4  于 2023-03-06  发布在  其他
关注(0)|答案(3)|浏览(155)

我有一个Pandas数据框,其值如下
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我想知道是否有任何方法可以将日期、月份、年份和时间列合并为pd.datetime

14ifxucb

14ifxucb1#

to_datetime与自动转换列Day,Month,Year一起使用,加上time s转换后的to_timedelta

df['Datetime'] = pd.to_datetime(df.rename(columns={'Date':'Day'})[['Day','Month','Year']]) + \
                 pd.to_timedelta(df['Time'])

另一种解决方案是先将所有列转换为string
x一个一个一个一个x一个一个二个一个x一个一个三个一个
最后,如果需要,请删除这些列:

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
pjngdqdw

pjngdqdw2#

将这些列连接在一起,形成字符串格式,并使用pd.to_datetime转换为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
5tmbdcev

5tmbdcev3#

import pandas as pd

您也可以使用apply()方法来完成此操作:-

df['Datetime']=df[['Year','Month','Date']].astype(str).apply('-'.join,1)+' '+df['Time']

最后使用pandasto_datetime()方法将**'日期时间'**转换为日期时间数据类型:-

df['Datetime']=pd.to_datetime(df['Datetime'])

df的输出:

ProcessID1  UserID   Date   Month   Year    Time        Datetime
0   248          Tony     29    4       2017    23:30:56    2017-04-29 23:30:56
1   436          Jeff     28    4       2017    20:02:19    2017-04-28 20:02:19
2   500          Greg      4    5       2017    11:48:29    2017-05-04 11:48:29

现在,如果要删除**“日期”“月份”“年份”“时间”**列,请用途:-

df=df.drop(columns=['Date','Month','Year', 'Time'])

相关问题