操作时间戳,使新时间戳仍然有效



我有一个熊猫数据帧,其中列的每个单元格都包含一个时间戳,保存为字符串:

>>>dataset['DateTime'][1]
'2018-03-14 00:34:46'

我想创建一个新列,其中按以下方式操作这些日期:

年份 += 1,

月 += 2,

天 += 3,

小时 += 4,

分钟 += 5,

秒 += 6

(对于这种操作来说,重要的是初始日期和新日期具有一对一的关系,以便我可以稍后将日期转换回来)

就我而言,我正在寻找的输出如下:

>>> dataset['newTimestamp'][1]
'2019-05-17 04:39:52'

为此,我使用datetime库来创建日期时间对象(作为测试,我首先从一个变量开始):

timestamp = dataset['DateTime'][1]
p = datetime.datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S")

目前我正在对单个变量进行算术:

year = p.year + 1
if p.month < 12:
month = p.month + 1
else:
month = 1
year += 1

但是,与月份一样,当您可以和不能添加值时,也存在例外,以便新时间戳仍然是实际时间戳(12 + 1 = 13,这不是实际月份)。

我可以显式地对每个规则进行编程,但这似乎工作量太大,我希望有更好的方法。我怎样才能更快地做到这一点?

使用DateOffset.
另外,请查看此类操作的相对增量模块:

dataset['newTimestamp'] = pd.to_datetime(dataset['DateTime']) + pd.DateOffset(years=1, months=2, days=3, hours=4, minutes=5, seconds=6)

你应该尝试漂亮的日期库:

pip install beautiful-date

并像这样使用它:

from beautiful_date import *
...
dataset['DateTime'].apply(lambda d: d + 1 * years + 2 * months + ... + 6 * seconds)

应该做这个伎俩。

strptime() 和 strftime() 是你正在寻找的函数。 继续谷歌这两个功能。当然,您将成为安倍解决所述问题。 这些可用于直接操作日期时间数量

相关内容

最新更新