我有一个包含 2000 行的 DataFrame df。前几行如下所示:
+--------------+----------+--+
|时间戳|持续时间 | |
+--------------+----------+--+
| 2018 年 1 月 5 日 0:23 | 22 | 22 |
| 2018 年 1 月 5 日 3:34 | 32 | 32 |
| 1/5/18 23:48 | 24 | |
| 18 年 1 月 6 日 2:26 | 15 | 15 |
| 2018 年 1 月 6 日 14:13 | 23 | 23 |
+--------------+----------+--+
我想根据以下条件创建一个新列 C: 如果持续时间 >= 20:则在时间戳中添加 20 分钟。 如果持续时间 < 20:则为 null。
因此,鉴于上述信息和数据,新表应如下所示:
+--------------+----------+--------------+--+--+
|时间戳|持续时间 | C | | |
+--------------+----------+--------------+--+--+
| 2018 年 1 月 5 日 0:23 | 22 | 22 2018 年 1 月 5 日 0:43 | | |
| 2018 年 1 月 5 日 3:34 | 32 | 32 2018 年 1 月 5 日 3:54 | | |
| 1/5/18 23:48 | 24 | 2018 年 1 月 6 日 0:08 | | |
| 18 年 1 月 6 日 2:26 | 15 | 15空 | | |
| 2018 年 1 月 6 日 14:13 | 23 | 23 2018 年 1 月 6 日 14:33 | | |
+--------------+----------+--------------+--+--+
关于如何做到这一点有什么想法吗?
最佳答案
一点点日期时间算术就可以做到这一点。
df['C'] = pd.to_datetime(df.Timestamp) + pd.to_timedelta(
np.where(df.Duration > 20, 20, np.nan), unit='m')
df['C']
0 2018-01-05 00:43:00
1 2018-01-05 03:54:00
2 2018-01-06 00:08:00
3 NaT
4 2018-01-06 14:33:00
Name: C, dtype: datetime64[ns]
请随意根据需要格式化结果:
df['C'] = df['C'].dt.strftime('%m/%d/%y %H:%M')
注意:如果您的日期从第一天开始,请将时间戳转换代码更改为
pd.to_datetime(df.Timestamp, dayfirst=True, errors='coerce')
因此,日期会被适本地处理为先有日期。
关于python - 在python中添加分钟到时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50922533/