python - 在python中添加分钟到时间戳

标签 python pandas datetime dataframe

我有一个包含 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/

相关文章:

python - 如何在python中使用循环创建多个类对象?

python - 从 Python Dataframe 返回连续第六大值

python - 将字典的值拆分为单独的 Pandas 数据框列——使它们成为虚拟的

c# - 在本地时区格式化 UTC 时间戳

python - 在 Pandas 中转换为日期时间格式?

python - 将正确的两个字符(如果有的话)设置为大写?

python - 为命名空间初始化模块中的类

python - Pandas - 将 float 转换为正确的日期时间或时间对象

java - 设置24 :00 as java time

python - 如何用pyparsing解析这串数据结构