如何在Python DataFrame中基于起始时间与deltaT生成新datetime列?
解决方案
要实现起始时间加秒数偏移得到新的datetime列,核心是把deltaT转换成**时间间隔(Timedelta)**而非datetime,因为两个datetime类型不能直接相加,具体步骤如下:
- 先将原始的起始时间列(object类型)转换为datetime类型:
sinfo['BeginTime_dt'] = pd.to_datetime(sinfo['BeginTime'])
- 把deltaT列转换为Timedelta(秒为单位):
delta_timedelta = pd.to_timedelta(sinfo['deltaT'], unit='s')
- 两列相加得到最终的datetime列:
sinfo['NewDatetime'] = sinfo['BeginTime_dt'] + delta_timedelta
错误原因解释
你之前用pd.to_datetime(df.deltaT, unit='s')得到的是从1970-01-01 00:00:00开始的datetime对象,本质是一个时间点,而不是时间间隔。Pandas不允许两个时间点直接相加,所以抛出TypeError: cannot add DatetimeArray and DatetimeArray错误。而Timedelta是表示时间长度的类型,datetime + timedelta的操作是合法的,会得到一个新的时间点。
简化写法
也可以把步骤合并成一行:
sinfo['NewDatetime'] = pd.to_datetime(sinfo['BeginTime']) + pd.to_timedelta(sinfo['deltaT'], unit='s')
内容的提问来源于stack exchange,提问作者Swawa
相关产品推荐
相关产品推荐

