首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于多个DateTime比较创建组

基于多个DateTime比较创建组
EN

Stack Overflow用户
提问于 2019-06-05 02:20:51
回答 1查看 40关注 0票数 0

我正在尝试创建一个基于的列,并使用基于一个日期列与其他三个日期列的比较的值填充它。

DataFrame df的示例如下所示。显示的所有日期都已转换为pd.to_datetime,这导致了一些NaT值,因为个人没有进步

代码语言:javascript
复制
    1st_date     2nd_date        3rd_date     action_date
    2015-10-05   NaT             NaT          2015-12-03 
    2015-02-27   2015-03-14      2015-03-15   2015-04-08 
    2015-03-07   2015-03-27      2015-03-28   2015-03-27 
    2015-01-05   2015-01-20      2015-01-21   2015-05-20 
    2015-01-05   2015-01-20      2015-01-21   2015-09-16 
    2015-05-23   2015-06-18      2015-06-19   2015-07-01 
    2015-03-03   NaT             NaT          2015-07-23 
    2015-03-03   NaT             NaT          2015-11-14 
    2015-06-05   2015-06-19      2015-06-20   2015-10-24 
    2015-10-08   2015-10-21      2015-10-22   2015-12-22 

我正在尝试创建第五个列,其中包含action_date列与前三个日期列1st_date, 2nd_date, 3rd_date的比较结果(或组)。

我正在尝试用将每个日期分配给一个组的字符串填充名为action_group的第五列。

潜在函数(和预期输出)的伪代码为:if action_date > 1st_date and < 2nd_date then action_group = '1st_action_group'

需要对action_date2nd_date3rd_date进行相同的比较,这将导致action_group列中的输出为2nd_action_group

最后,如果action_date大于3rd_dateaction_group将被赋值为3rd_action_group

预期输出的示例如下所示。

代码语言:javascript
复制
1st_date     2nd_date        3rd_date     action_date  action_group
2015-10-05   NaT             NaT          2015-12-03   1st_action_group
2015-02-27   2015-03-14      2015-03-15   2015-04-08   3rd_action_group
2015-03-07   2015-03-27      2015-03-28   2015-03-27   2nd_action_group
2015-01-05   2015-01-20      2015-01-21   2015-05-20   3rd_action_group
2015-01-05   2015-01-20      2015-01-21   2015-09-16   3rd_action_group
2015-05-23   2015-06-18      2015-06-19   2015-07-01   3rd_action_group
2015-03-03   NaT             NaT          2015-07-23   1st_action_group
2015-03-03   NaT             NaT          2015-11-14   1st_action_group
2015-06-05   2015-06-19      2015-06-20   2015-10-24   3rd_action_group
2015-10-08   2015-10-21      2015-10-22   2015-12-22   3rd_action_group

任何人都可以提供的任何帮助都将非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 04:26:40

代码语言:javascript
复制
df['action_group'] = np.where(df['action_date']>df['3rd_date'], 
                              '3rd_action_group', 
                               np.where(((df['action_date'] >= df['2nd_date'])&(df['action_date']<df['3rd_date'])), 
                                          '2nd_action_group', 
                                          '1st_action_group'))

你只需要堆叠2个np.就可以得到你想要的结果。

代码语言:javascript
复制
    1st_date    2nd_date    3rd_date    action_date action_group
0   2015-10-05     NaT          NaT     2015-12-03  1st_action_group
1   2015-02-27  2015-03-14  2015-03-15  2015-04-08  3rd_action_group
2   2015-03-07  2015-03-27  2015-03-28  2015-03-27  2nd_action_group
3   2015-01-05  2015-01-20  2015-01-21  2015-05-20  3rd_action_group
4   2015-01-05  2015-01-20  2015-01-21  2015-09-16  3rd_action_group
5   2015-05-23  2015-06-18  2015-06-19  2015-07-01  3rd_action_group
6   2015-03-03     NaT          NaT     2015-07-23  1st_action_group
7   2015-03-03     NaT          NaT     2015-11-14  1st_action_group
8   2015-06-05  2015-06-19  2015-06-20  2015-10-24  3rd_action_group
9   2015-10-08  2015-10-21  2015-10-22  2015-12-22  3rd_action_group
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56449353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档