如何基于数据框中的条件逻辑创建日期差值?

时间:2019-07-15 20:19:20

标签: python pandas dataframe

我正在尝试基于布尔逻辑在数据框中创建一个数字字段。如何检查日期列的值并设置其格式以产生数字值?

有一个出售日期和一个取消日期,都作为字符串/对象加载。还有一个“搅动”列,如果用户已取消,则为1,否则为0。

'fd'=冻结日期,被视为“今天的日期”

CustomerLife字段=如果客户流失== 0,则执行“ fd”-“出售日期”,否则执行“取消日期”-“出售日期”。

df日期示例: 成交日期:1/1/2017 取消日期:3/5/2018

from datetime import datetime
from datetime import date

def days_between(d1, d2):
    d1 = datetime.strptime(d1, "%Y-%m-%d")
    d2 = datetime.strptime(d2, "%Y-%m-%d")
    return abs((d2 - d1).days)

fd = date(2019, 6, 20) #frozen date

df['CL'] = [days_between(fd,df['Date Sold']) 
            if x==0 
            else days_between(df['Date of Cancellation'],df['Date Sold']) 
            for x in df['Churn']]


TypeError: strptime() argument 1 must be str, not datetime.date

1 个答案:

答案 0 :(得分:0)

您应该使用熊猫提供的to_datetime功能。它将直接将Pandas Series对象解析为日期时间,您实际上并不需要days_between函数,只需df.loc即可获取行并简单地减去。