我在连接以下逻辑链时遇到了一些问题:
np.where(df['date3'].isnull(), np.busday_count(df['date2'], df['date1'], holidays=my_holidays),
np.busday_count(df['date3'], df['date1'], holidays=my_holidays))
下面是一个示例:
date1 date2 date3
2019-01-31 2019-02-01 None
2019-01-31 2019-02-01 None
2019-02-28 2018-10-03 2019-02-28
2019-02-28 2018-10-03 2019-02-28
2019-02-28 2018-10-03 2019-02-28
简短背景-date3列有一些空值。我尝试转换为datetime,然后在每个日期列之后运行这个函数,并在其中添加.dt.date。我试过上面的方法,日期是“2019-01-31”。两者都给我一个ValueError: Cannot compute a business day count with a NaT (not-a-time) date when trying from the string versions of the dates
,ValueError: cannot convert float NaN to integer when trying after converting to datetime
从在线阅读中,问题似乎是由于一个日期列中的空值引起的,无论我是作为字符串保留,空值是None,还是当我转换为datetime时,空值与np.where()
函数一起变成了NaT
,一种语法糖
有没有更简单的方法来实现这一点?理想情况下,由于在整个数据帧中循环所需的时间,我会尽量避免for循环
我可以通过蛮力来实现这一点,但我想知道如何实现这一点,而不必在整个数据帧中循环
我也面临着同样的问题,当我想使用busday_count()函数时,即使我使用when()函数,它似乎也适用于整列,并且由于Nat值的原因而失败。 my的工作方式是在where()函数之前用0替换Nat值
然后将
where()
函数与== 0 or >= 0
这样的条件一起使用,它对我很有效然后将该列从
0
改回Nat
这不是一个干净的解决方案,但它是有意义的
希望它能起作用
问题是,在
where()
函数中不能使用多个条件“&;”,但似乎不是您的情况相关问题 更多 >
编程相关推荐