【问题标题】:How to label dates in a new column in Python?如何在 Python 的新列中标记日期?
【发布时间】:2020-06-25 22:44:36
【问题描述】:

我想用 Python 标记我的数据框,如下例所示:

Index                               Activity
2020-01-27 00:08:01.882000+00:00    Sleep
2020-01-27 00:16:33.848000+00:00    Sleep
2020-01-27 00:25:06.131000+00:00    Sleep
2020-01-27 00:33:59.917000+00:00    Sleep 
2020-01-27 00:42:31.884000+00:00    Sleep 
.
.
.
2020-01-27 13:04:59.940000+00:00    Work
2020-01-27 13:13:31.907000+00:00    Work
2020-01-27 13:22:03.873000+00:00    Work
2020-01-27 13:30:02.953000+00:00    Work
2020-01-27 13:38:34.919000+00:00    Work
.
.
.

考虑到我有一个包含多个日期的索引,如上例所示,“活动”列是我要根据这些日期创建的新索引。

对于示例,从日期'2020-01-27 00:04:59.940000+00:00'我一直睡到'2020-01-27 07:01:43.940000+00: 00',从'2020-01-27 08:30:01.920000+00:00'工作到'2020-01-27 18:15:10.940000+00:00',活动可以更进一步。 .

我知道如何创建新列以及如何分配标签(活动词 - 睡眠、工作等),但我不知道如何选择执行该活动的具体日期。 (比如一段时间日期

注意:** 我的日期不应更改,它们是我的数据框的索引。 **

我搜索了这个主题,但没有找到任何可以帮助我的东西。如果您能帮助我,我将不胜感激!

谢谢你!

【问题讨论】:

  • 您的意思是 df[df['Acivitiy'].eq('Sleep')]? 无论如何感谢您添加输入,您可以添加预期的输出吗?

标签: python pandas dataframe time-series


【解决方案1】:

假设您的索引是datetime64 类型,您可以像数字对象一样比较日期时间。

了解这一点后,您可以定义您希望活动等于“睡眠”、“工作”等的范围......

这是一个 sn-p,它显示了如何将列的一部分设置为“睡眠”。您只需为“工作”以及您想要包含的任何其他活动复制此内容。

编辑:添加了 pytz 以制作可识别 tz 的日期时间

import pytz
from datetime import datetime

sleep_start = pytz.utc.localize(datetime(2020, 1, 27, 0, 4, 59))    # 2020-01-27 00:04:59
sleep_end = pytz.utc.localize(datetime(2020, 1, 27, 7, 1, 43))      # 2020-01-27 07:01:43

is_sleeping = (df.index > sleep_start) & (df.index < sleep_end)

# initialize new column "Activity" to be empty
df['Activity'] = ''

# set the slice of the "Activity" column where `is_sleeping` is True to "Sleep"
df.loc[is_sleeping, 'Activity'] = 'Sleep'

【讨论】:

  • 谢谢!真的很有帮助!但我仍然有一个问题,它说“TypeError:无法比较 tz-naive 和 tz-aware datetime-like objects”。我尝试了 df.tz_localize(None),但这不是一个有用的补充。你知道在这种情况下应该做什么吗?
  • 是的,我相信你必须使用pytz。我相信它已经包含在 Python 中,所以你不需要安装任何其他东西。请参阅上面的编辑并试一试@Roxana
猜你喜欢
  • 2015-11-26
  • 2016-07-25
  • 1970-01-01
  • 2015-09-11
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多