Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.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 在熊猫数据帧中检查NAN时的奇怪行为_Python_Pandas - Fatal编程技术网

Python 在熊猫数据帧中检查NAN时的奇怪行为

Python 在熊猫数据帧中检查NAN时的奇怪行为,python,pandas,Python,Pandas,我想循环df中的所有行,检查两个条件是否成立,如果成立,则用其他值替换列中的值。我尝试了两种不同的方法: if (sales.iloc[idx]['shelf'] in ("DRY BLENDS","LIQUID BLENDS")) & np.isnan(sales.iloc[idx]['traceable_blend']): sales.iloc[idx]['traceable_blend'] = False 以及: 通过包含print语句,我们已经验证了if

我想循环df中的所有行,检查两个条件是否成立,如果成立,则用其他值替换列中的值。我尝试了两种不同的方法:

    if (sales.iloc[idx]['shelf'] in ("DRY BLENDS","LIQUID BLENDS")) & np.isnan(sales.iloc[idx]['traceable_blend']):
        sales.iloc[idx]['traceable_blend'] = False
以及:

通过包含print语句,我们已经验证了if语句实际上是功能性的,但从未发生赋值。一旦我们运行了循环,“traceable_blend”列中就有True和NaN值,但决不会有False。不知怎的,任务失败了

看起来这可能有用:

    if (sales.iloc[idx]['shelf'] in ("DRY BLENDS","LIQUID BLENDS")) & np.isnan(sales.iloc[idx]['traceable_blend']):
        sales.at[idx, 'traceable_blend'] = False

但我还是想知道发生了什么

这个,
sales.iloc[idx]['traceable_blend']=False
,是索引链接,几乎永远不会起作用。事实上,您不需要循环:

sales['traceable_blend'] = sales['traceable_blend'].fillna(sales['shelf'].isin(['DRY BLENDS', 'LIQUID BLENDS']))

Pandas提供了两个用于检查缺失数据(NaN或null)的函数:
isnull()
notnull()
——它们返回一个布尔值。我建议尝试这些,而不是
isnan()


您还可以通过链接
.values.any()

来确定序列中是否缺少任何值。此处不太可能需要显式循环。请提供一份报告。
sales['traceable_blend'] = sales['traceable_blend'].fillna(sales['shelf'].isin(['DRY BLENDS', 'LIQUID BLENDS']))