如何从日期和时间列中获取一天的一部分

我有一个名为“ date_time”的列,该列具有某年的日期和时间戳,我想查找该时间属于一天中的哪个部分,例如早上,中午,晚上和晚上,以提取以下特征:

如果date_time.dt.hour> = 5且new_data.current_date_time.dt.hour 则是早晨 如果date_time.dt.hour> = 12并且new_data.current_date_time.dt.hour 然后中午 如果date_time.dt.hour> = 17并且new_data.current_date_time.dt.hour

但是我无法使用熊猫to_datetime数据类型的.dt.hour属性如上所述进行过滤,请帮助我实现这一目标。

powerbww 回答:如何从日期和时间列中获取一天的一部分

您应该从timstamp获取日期时间,有多种方法可以执行此操作,您可以参考此Converting between datetime and Pandas Timestamp objects

一旦您有了HH,MM,SS等时间对象,就可以使用自己的逻辑来获取早晨,中午,晚上和晚上。 这里的一点是,标准是在上午24点或上午24点获得时间,如果您想说早上或晚上,则必须根据您的情况匹配时间,而不是寻找直接方法。 再次是我的看法。 具体来说,如果我回答:

  • 第1步,将时间戳解析为字符串,获取类似于 (YY-MM-DD HH:MM:SS)
  • 步骤2从字符串对象中提取HH和MM
  • 第3步,通过将这些字符串转换为数字来执行逻辑
,

这是Shubham的answer的补充。我认为,按照他的描述,您可以正确提取时间戳。

此外,根据您的用例,您可能想对列本身进行更改,或者可以再添加一个列来存储这些值。让我使用后面的内容来解释该过程。要运行示例代码,让我将此列称为part_of_day。可以通过

完成

df["C"] = ""

现在,您将必须根据某些条件开始向列中添加值。一般语法是这样的。

df.loc[<mask to generate the labels to index>,<optional column(s)>] = <some value>

对于您的情况,条件之一可能看起来像

df.loc[5 <= df.date_time.hour and df.date_time.hour <=12,"part_of_day"] = "morning"
本文链接:https://www.f2er.com/3162210.html

大家都在问