Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中向时间戳添加分钟数_Python_Pandas_Datetime_Dataframe - Fatal编程技术网

在python中向时间戳添加分钟数

在python中向时间戳添加分钟数,python,pandas,datetime,dataframe,Python,Pandas,Datetime,Dataframe,我有一个2000行的数据帧df。前几行如下所示: +--------------+----------+--+ |时间戳|持续时间|| +--------------+----------+--+ | 1/5/18 0:23 | 22 | | | 1/5/18 3:34 | 32 | | | 1/5/18 23:48 | 24 | | | 1/6/18 2:26 | 15 | | | 1/6/18 14:13 | 23

我有一个2000行的数据帧df。前几行如下所示:

+--------------+----------+--+
|时间戳|持续时间||
+--------------+----------+--+
| 1/5/18 0:23  |       22 |  |
| 1/5/18 3:34  |       32 |  |
| 1/5/18 23:48 |       24 |  |
| 1/6/18 2:26  |       15 |  |
| 1/6/18 14:13 |       23 |  |
+--------------+----------+--+

我想根据以下标准创建一个新的C列: 如果持续时间>=20:则向时间戳添加20分钟。 如果持续时间<20:则为空

因此,根据上述信息和数据,新表应如下所示:

+--------------+----------+--------------+--+--+
|时间戳|持续时间| C | ||
+--------------+----------+--------------+--+--+
| 1/5/18 0:23  |       22 | 1/5/18 0:43  |  |  |
| 1/5/18 3:34  |       32 | 1/5/18 3:54  |  |  |
| 1/5/18 23:48 |       24 | 1/6/18 0:08  |  |  |
|2018年1月6日2:26 | 15 |空||
| 1/6/18 14:13 |       23 | 1/6/18 14:33 |  |  |
+--------------+----------+--------------+--+--+


有什么办法吗

一点日期时间算法应该可以做到这一点

df['C'] = pd.to_datetime(df.Timestamp) + pd.to_timedelta(
              np.where(df.Duration > 20, 20, np.nan), unit='m')

您可以根据需要设置结果的格式:

df['C'] = df['C'].dt.strftime('%m/%d/%y %H:%M')
注意:如果日期以dayfirst开始,请将时间戳转换代码更改为

pd.to_datetime(df.Timestamp, dayfirst=True, errors='coerce')

因此,将日期作为第一天进行适当处理。

请删除格式并保留列,以便下次更容易复制。感谢您的快速回复!还有一个问题。对于持续时间>=20,“C”列不显示添加到时间戳的20分钟,或者对于持续时间<20的情况,不显示null。例如,在上面的示例中,第一行仍然显示1/5/18 0:23,而不是1/5/18 0:43。第四行仍然显示1/6/18 2:26,而不是null。
pd.to_datetime(df.Timestamp, dayfirst=True, errors='coerce')