检查 Pandas 中的单个单元格值是不是为 NaN

Posted

技术标签:

【中文标题】检查 Pandas 中的单个单元格值是不是为 NaN【英文标题】:Check if single cell value is NaN in Pandas检查 Pandas 中的单个单元格值是否为 NaN 【发布时间】:2015-03-01 12:52:32 【问题描述】:

我只想检查 Pandas 系列中的单个单元格是否为空,即检查值是否为 NaN

所有其他答案均适用于系列和数组,但不适用于单值。

我试过pandas.notnullpandas.isnullnumpy.isnan。是否有仅针对单个值的解决方案?

【问题讨论】:

您能否为您的问题添加一个输入和输出的最小示例? numpy.isnan 适用于单个值,但我想这不是你的问题。 例如如果 numpy.isnan(vendor_details['EMAIL']): 这里的 vendor_details 是一个熊猫系列。 我投票结束:OP 中描述的所有三种方法都应该有效,并且接受的解决方案只是使用其中的两种。同样,公认的答案是完全按照 OP 所说的行不通 【参考方案1】:

试试这个:

import pandas as pd
import numpy as np
from pandas import *

>>> L = [4, nan ,6]
>>> df = Series(L)

>>> df
0     4
1   NaN
2     6

>>> if(pd.isnull(df[1])):
        print "Found"

Found

>>> if(np.isnan(df[1])):
        print "Found"

Found

【讨论】:

很有用,isnull和isnan方法有什么区别?有没有办法像 if df[1] then 或类似的那样测试 NaN 的真实性? isnull和isnan没有区别; isnull 是 isnan 的别名。【参考方案2】:

您可以使用“isnull”和“at”来检查数据框中的特定值。

例如:

import pandas as pd
import numpy as np

df = pd.DataFrame([[np.nan, 2], [1, 3], [4, 6]], columns=['A', 'B'])

产量:

    A   B
0   NaN 2
1   1.0 3
2   4.0 6

检查值:

pd.isnull(df.at[0,'A'])

-> 是的

pd.isnull(df.at[0,'B'])

-> 错误

【讨论】:

【参考方案3】:

第 1 步。)

df[df.isnull().any(1)]

----> 如果有任何值,将为您提供带有行和列的数据框。

第 2 步。)

这将为您提供数据框中的确切值是 nan 的位置。 那你就可以了

if(**df.iloc[loc_row,loc_colum]==np.nan**):
    print"your code here"

【讨论】:

【参考方案4】:

我自己刚遇到这个问题,找到了一个解决方案,不完美,但有效。如上所述,这三个答案都没有解决 OP 的问题。这是我的问题的一个例子,我觉得是一样的。

# fill null values of one column with that of another
f = lambda row: row['A'] if (row['B'].isnull()) else row['B']
df['B'] = df.apply(f, axis=1)

>>> AttributeError: 'str' object has no attribute 'isnull'

因为值 within 数据框的一个单元格只是一个原始数据类型,所以您不能使用任何 pandas 内置方法。所以这就是我所做的。

f = lambda row: row['A'] if (str(row['B'])=='nan') else row['B']

这实际上是我唯一可以开始工作的事情!

【讨论】:

这在大多数情况下也适用于我。请注意,如果无法使用 str() 读取单元格值,则此解决方案将不起作用。即,如果使用 Python 2.7 并且单元格具有 unicode 字符串。 Python 2.7 对 str() 使用 ascii 编码,如果使用它来检查 unicode 字符串,则会抛出错误。

以上是关于检查 Pandas 中的单个单元格值是不是为 NaN的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Pandas 在 Python 中基于同一行中的另一个单元格设置单元格值

按单元格值提取 excel 数据:python PANDAS

基于单个单元格值的 Google 电子表格中的重复行

熊猫:将特定的 Excel 单元格值读入变量

检查datagridview单元格中的数据是不是为null

Pandas Dataframe - 根据正则表达式条件替换所有单元格值