python - 在python pandas中将时间对象转换为日期时间格式
问题描述
我有一个具有 dtype object的列名DateTime的数据集。
df['DateTime'] = pd.to_datetime(df['DateTime'])
我已经使用上面的代码转换为日期时间格式,然后在列中进行拆分以分别具有日期和时间
df['date'] = df['DateTime'].dt.date
df['time'] = df['DateTime'].dt.time
但是在拆分之后,格式更改为对象类型,并且在将其转换为日期时间时,它显示时间列名称的错误为:TypeError: is not convertible to datetime
如何将其转换为日期时间格式的时间列
解决方案
您可以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 - Quandl LimitExceededError @ first request 虽然使用 API
- python - .min() arg 是一个空序列
- json - 如何传递可能被多次编码的字符串
- go - Golang ioutil.ReadAll 无限循环
- c# - 将参数传递给 AJAX 模式弹出窗口?
- c++ - 将现代 C++ 从 Linux 交叉编译到 Windows
- flutter - PhotoView 库无法放大/缩小图像
- android - 安卓谷歌地图方向从a到b
- python - 在 QGraphicsScene 中的 GGraphicsEllipseItem 的中心对齐 QLabel
- sql - 使用 SQLAlchemy 引擎执行 SQL 文件的问题 - 在类似条件下使用 %