python - 根据多个其他列中特定范围内的日期的存在情况创建列

标签 python pandas datetime python-datetime

我有一个名为 df 的数据框,看起来与此类似(除了“访问”列的数量达到 Visit_74 并且有数百个客户端 - 我在这里对其进行了简化)

p>
Client    Visit_1     Visit_2     Visit_3     Visit_4     Visit_5         
Client_1  2016-05-10  2016-05-25  2016-06-10  2016-06-25  2016-07-10
Client_2  2017-05-10  2017-05-25  2017-06-10  2017-06-25  2017-07-10
Client_3  2018-09-10  2018-09-26  2018-10-10  2018-10-26  2018-11-10  
Client_4  2018-10-10  2018-10-26  2018-11-10  2018-11-26  2018-12-10

我想创建一个名为 Four_Visits 的新列,其中包含两个值:01。如果从 Visit_1Visit_5< 的任一列中至少有四个日期,我希望将 Four_Visits 设置为等于 1/code> 位于 2018-10-152018-12-15 之间。生成的数据框应如下所示:

Client    Visit_1     Visit_2     Visit_3     Visit_4     Visit_5     Four_Visits  
Client_1  2016-05-10  2016-05-25  2016-06-10  2016-06-25  2016-07-10  0
Client_2  2017-05-10  2017-05-25  2017-06-10  2017-06-25  2017-07-10  0
Client_3  2018-09-10  2018-09-26  2018-10-10  2018-10-26  2018-11-10  0
Client_4  2018-10-10  2018-10-26  2018-11-10  2018-11-26  2018-12-10  1  

最佳答案

转换为datetime如果还没有,则使用过滤器和 >= + <=检查每行的日期之间是否有超过 4 个访问列:

import pandas as pd
# df = df.set_index('Client').apply(pd.to_datetime).reset_index()

df['Four_Visits'] = ((df.filter(like='Visit').ge(pd.to_datetime('2018-10-15')).fillna(0).astype(bool))
                     & (df.filter(like='Visit').le(pd.to_datetime('2018-12-15')).fillna(0).astype(bool))
                    ).sum(1).ge(4).astype('int')

输出:

     Client    Visit_1    Visit_2    Visit_3    Visit_4    Visit_5  Four_Visits
0  Client_1 2016-05-10 2016-05-25 2016-06-10 2016-06-25 2016-07-10            0
1  Client_2 2017-05-10 2017-05-25 2017-06-10 2017-06-25 2017-07-10            0
2  Client_3 2018-09-10 2018-09-26 2018-10-10 2018-10-26 2018-11-10            0
3  Client_4 2018-10-10 2018-10-26 2018-11-10 2018-11-26 2018-12-10            1

关于python - 根据多个其他列中特定范围内的日期的存在情况创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54027161/

相关文章:

datetime - Symfony2 : How to operate with datetime-objects

Python正则表达式-提取浮点模式

python - 使用两个堆栈的解决方案

python - 如何使用tensorflow对象检测API提高对象检测的精度?

python - 关于FastAPI的依赖注入(inject)及其可重用性的问题

python - 嵌套 np.where

python - 获取 pandas 中连续行中唯一值的个数

Python pandas 连接列 csv

c# - 如何在 C# 中将 DateTime 转换为 yyyy-mm-ddT00 :00:00. 000Z 格式?

C# 第二个 DateTime.ParseExact 检查第一个是否失败