我有一个列名为DateTime的数据集,其数据类型为object。
df['DateTime'] = pd.to_datetime(df['DateTime'])
我已使用上面的代码转换为日期时间格式,然后在列中进行拆分以分别显示日期和时间
df['date'] = df['DateTime'].dt.date
df['time'] = df['DateTime'].dt.time
但是在分割之后,格式更改为对象类型,并且在将其转换为日期时间时,它显示 时间 列名称错误:类型错误:无法转换为日期时间
如何将时间列转换为日期时间格式
最佳答案
您可以使用combine
使用 zip
进行列表理解:
df = pd.DataFrame({'DateTime': ['2011-01-01 12:48:20', '2014-01-01 12:30:45']})
df['DateTime'] = pd.to_datetime(df['DateTime'])
df['date'] = df['DateTime'].dt.date
df['time'] = df['DateTime'].dt.time
import datetime
df['new'] = [datetime.datetime.combine(a, b) for a, b in zip(df['date'], df['time'])]
print (df)
DateTime date time new
0 2011-01-01 12:48:20 2011-01-01 12:48:20 2011-01-01 12:48:20
1 2014-01-01 12:30:45 2014-01-01 12:30:45 2014-01-01 12:30:45
或者转换为字符串,连接在一起并再次转换:
df['new'] = pd.to_datetime(df['date'].astype(str) + ' ' +df['time'].astype(str))
print (df)
DateTime date time new
0 2011-01-01 12:48:20 2011-01-01 12:48:20 2011-01-01 12:48:20
1 2014-01-01 12:30:45 2014-01-01 12:30:45 2014-01-01 12:30:45
但是,如果使用 floor
删除时间并将时间转换为时间增量,则仅使用 +
:
df['date'] = df['DateTime'].dt.floor('d')
df['time'] = pd.to_timedelta(df['DateTime'].dt.strftime('%H:%M:%S'))
df['new'] = df['date'] + df['time']
print (df)
DateTime date time new
0 2011-01-01 12:48:20 2011-01-01 12:48:20 2011-01-01 12:48:20
1 2014-01-01 12:30:45 2014-01-01 12:30:45 2014-01-01 12:30:45
关于python - 在 python pandas 中将时间对象转换为日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53470304/