Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python np.where,np.busday_count(),带列_Python_Pandas_Numpy_Datetime_Nan - Fatal编程技术网

Python np.where,np.busday_count(),带列

Python np.where,np.busday_count(),带列,python,pandas,numpy,datetime,nan,Python,Pandas,Numpy,Datetime,Nan,我在连接以下逻辑链时遇到了一些问题: 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

我在连接以下逻辑链时遇到了一些问题:

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:当从日期的字符串版本尝试时,无法使用NaT(非时间)日期计算工作日计数,
ValueError:在转换为日期时间后尝试时,无法将浮点NaN转换为整数

从在线阅读中,问题似乎是由于“一个日期”列中的空值引起的,无论我是保留为字符串,空值为None,还是当我转换为datetime时,空值与
np.where()
函数一起变成
NaT
,一种语法糖

df['date3']= df['date3'].fillna(0)
有没有更简单的方法来实现这一点?理想情况下,由于在整个数据帧中循环所需的时间,我会尽量避免for循环


我可以通过蛮力实现这一点,但我想知道如何实现这一点,而不必在整个数据帧中循环。

我面临着同样的问题,当我想使用busday\u count()函数时,即使我使用when()函数,它似乎也适用于整列,并且由于Nat值而失败。 my的工作方式是在where()函数之前用0替换Nat值

df['date3']= df['date3'].fillna(0)
然后在
==0或>=0
等条件下使用
where()
函数,它对我有效

然后将该列从
0
改回
Nat

这不是一个干净的解决方案,但它是有意义的

希望它能起作用


问题是,
where()
函数中的多个条件“&”不起作用,但这似乎不是您的情况。

请发布您的dataframesure示例,我将其添加到有问题的postalways put完整错误消息(从单词“Traceback”开始)中(不是注释),作为文本(不是屏幕截图)。还有其他有用的信息。添加了来自您发布的数据的错误消息。它看起来不是NaN(Null),而是“None”文本。请查收