在python中向时间戳添加分钟数
我有一个2000行的数据帧df。前几行如下所示:在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
+--------------+----------+--+
|时间戳|持续时间||
+--------------+----------+--+
| 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')