通过在 pandas 中添加 timedelta 来添加时间列

Posted

技术标签:

【中文标题】通过在 pandas 中添加 timedelta 来添加时间列【英文标题】:Add Time column by adding timedelata in pandas 【发布时间】:2018-06-11 21:35:05 【问题描述】:

我有一个熊猫数据框 df:

id    value     mins
1      a         12.4
2      u         14.2
3      i         16.2
3      g         17.0

我有一个 datetime.datetime 变量:

current_time = datetime.datetime(2018, 1, 2, 14, 0, 34, 628481)

我想在我的 df 'total_time' 中添加新列 这样对于每一行,它都会在 current_time 中添加增量值 mins。

id    value     mins        total_time
1      a         12.4   current_time+timedelta(minutes = 12.4)
2      u         14.2            and
3      i         16.2            so
3      g         17.0            on... for every row

我试过了:

df['total_time' = current_time+timedelta(minutes = df['mins'].item())

但我得到了一个错误:

can only convert an array of size 1 to a Python scalar

还有其他方法吗?

我正在使用 datetime.datetime 包

【问题讨论】:

【参考方案1】:

我认为您需要 to_timedeltaT 几分钟:

df['total_time'] = current_time + pd.to_timedelta(df['mins'], unit='T')
print (df)
   id value  mins                 total_time
0   1     a  12.4 2018-01-02 14:12:58.628481
1   2     u  14.2 2018-01-02 14:14:46.628481
2   3     i  16.2 2018-01-02 14:16:46.628481
3   3     g  17.0 2018-01-02 14:17:34.628481

详情:

print (pd.to_timedelta(df['mins'], unit='T'))
0   00:12:24
1   00:14:12
2   00:16:12
3   00:17:00
Name: mins, dtype: timedelta64[ns]

【讨论】:

哇!好的!另外,如果我必须再添加一列作为timestamp,我可以这样做吗 - `df['timestamp'] = int(datetime.timestamp(df['total_time'])) `? 我试过用这个:`df['timestamp'] = int(datetime.timestamp(pd.to_datetime(df['total_time']))) `但是得到了错误:descriptor 'timestamp' requires a 'datetime.datetime' object but received a 'Series'跨度> 不确定是否理解,什么是新栏目?是日期时间吗?你能解释更多吗?或者需要20180102141258628481 之类的东西? 您需要从日期时间创建整数吗? 好吧,我看到一个问题:我的current_time = datetime.datetime 的数据类型,但是我的`df = pandas.tslib.Timestamp` 中的total_time 类型我不能保持与日期时间相同的数据类型吗.datetime?

以上是关于通过在 pandas 中添加 timedelta 来添加时间列的主要内容,如果未能解决你的问题,请参考以下文章

在 Pandas 中绘制 TimeDeltas

查询pandas中的timedelta列,过滤行

将带有 timedeltas 的 pandas 数据帧写入镶木地板

在 pandas df 中查找 timedelta 对象的均值和标准差

Pandas | 22 时间差

应用`Pandas.Timedelta.total_seconds`时的奇怪行为