Python:Pandas中的NaN值仅适用于单个值

vid*_*dit 29 python nan pandas

我只想检查Pandas系列中的单个单元格是否为空.

即,我想检查一个值是否是NaN.所有其他答案适用于系列和数组,但不适用于单值.

我已经试过pandas.notnull,pandas.isnull,numpy.isnan.是否只有单一价值的解决方案?

aer*_*ite 39

试试这个:

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
Run Code Online (Sandbox Code Playgroud)

  • 很有用,isnull 和 isnan 方法有什么区别?有没有办法像“if df[1] then”或类似的方法来测试 NaN 的真实性? (2认同)

小智 5

第1步。)

df[df.isnull().any(1)]
Run Code Online (Sandbox Code Playgroud)

----> 会给你带有行和列的数据框,如果有任何值的话。

第2步。)

这将为您提供数据框中的位置,其中确切的值为 nan。那么你可以做

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


spa*_*row 5

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

例如:

import pandas as pd
import numpy as np

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

产量:

    A   B
0   NaN 2
1   1.0 3
2   4.0 6
Run Code Online (Sandbox Code Playgroud)

要检查值:

pd.isnull(df.at[0,'A'])
Run Code Online (Sandbox Code Playgroud)

-> 真

pd.isnull(df.at[0,'B'])
Run Code Online (Sandbox Code Playgroud)

-> 错误