社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

切片日期时间函数:Python

AdrianC • 6 年前 • 2000 次点击  

我有一个日期框架,包含以下列:

0    2019-06-30 17:31:43
1    2019-06-30 07:07:41
2    2019-06-30 17:11:46
3    2019-06-30 12:13:50
4    2019-06-30 12:13:55
5    2019-06-30 03:01:53
6    2019-06-30 07:22:02
7    2019-06-30 18:12:47
8    2019-06-30 21:38:19
9    2019-06-30 03:01:58
10   2019-06-30 10:06:16
11   2019-06-30 03:46:43
12   2019-06-30 00:44:24
13   2019-06-30 00:44:29
14   2019-06-30 00:44:32
15   2019-06-30 00:44:33
16   2019-06-30 19:32:09
17   2019-06-30 09:09:42
18   2019-06-30 11:52:10
19   2019-06-30 18:30:00
20   2019-06-30 01:26:56
21   2019-06-30 19:29:02
22   2019-06-30 11:54:39
23   2019-06-30 16:54:47
24   2019-06-30 06:00:49
25   2019-06-30 18:51:17
26   2019-06-30 05:54:55
27   2019-06-30 19:22:43
28   2019-06-29 23:06:12
29   2019-06-30 04:26:07

我所追求的是一个新的专栏,它有一天的时间[早晨,下午,晚上]。

下一行返回布尔值

test['visitStartTime_aest'].dt.strftime('%H:%M:%S').between('00:00:00','12:00:00') 

这一行返回一个过滤后的数据帧,并将值更改为morning[这是我想要的]

test[test['visitStartTime_aest'].dt.strftime('%H:%M:%S').between('00:00:00','12:00:00')] = 'Morning'

这行得通,但现在这个专栏已经混合了 dtypes 很难将剩下的时间戳转换成现在的一些时间戳 str 其他的是 datetime64[ns]

我试过以下方法,但没有成功:

def time_of_day(df, date_col):
  df[date_col] = df[df[date_col].dt.strftime('%H:%M:%S').between('00:00:00','12:00:00')] = 'Morning'
  df[date_col] = df[df[date_col].dt.strftime('%H:%M:%S').between('12:00:01','18:00:00')] = 'Afternoon'
  df[date_col] = df[df[date_col].dt.strftime('%H:%M:%S').between('18:00:01','23:59:59')] = 'Evening'
  return df

这将完美地执行第一行,但下面的行遭受与上面相同的命运[混合dType ]

我也试过,但没有成功:

def time_of_day(df):
  if df['visitStartTime_aest'].dt.strftime('%H:%M:%S').between('00:00:00','12:00:00'):
    return 'Morning'
  elif df['visitStartTime_aest'].dt.strftime('%H:%M:%S').between('12:00:01','18:00:00'):
    return 'Afternoon'
  else:
    return 'Evening'

test.apply(time_of_day, axis=1)

知道我遗漏了什么吗?或者关于如何执行的指导?

谢谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46146
文章 [ 1 ]  |  最新文章 6 年前