我有一个熊猫数据帧,其中列的每个单元格都包含一个时间戳,保存为字符串:
>>>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() 是你正在寻找的函数。 继续谷歌这两个功能。当然,您将成为安倍解决所述问题。 这些可用于直接操作日期时间数量