Pandas 将数据帧设置单元设置为NaN

Pandas 将数据帧设置单元设置为NaN,pandas,dataframe,filter,nan,Pandas,Dataframe,Filter,Nan,我创建了一个数据帧,如下所示: A B 0 aa 1 1 bb 2 2 cc 3 3 dd 1 4 ee 1 然后我用这一行插入了一个标签: df['label']= np.where((df['B']>2),'start',np.NaN) 结果是 A B label 0 aa 1 nan 1 bb 2 nan 2 cc 3 start 3 dd 1 nan 4 ee 1 nan 这相当直截了当。

我创建了一个数据帧,如下所示:

    A  B
0  aa  1
1  bb  2
2  cc  3
3  dd  1
4  ee  1
然后我用这一行插入了一个标签:

df['label']= np.where((df['B']>2),'start',np.NaN)
结果是

    A  B  label
0  aa  1    nan
1  bb  2    nan
2  cc  3  start
3  dd  1    nan
4  ee  1    nan
这相当直截了当。但是,当我尝试计数器检查我的表时,我无法获得“nan”行

df[(df.label.isnull())]
Empty DataFrame
Columns: [A, B, label]
Index: []

df[(df.label.isna())]
Empty DataFrame
Columns: [A, B, label]
Index: []

df[(df.label == np.nan)]
Empty DataFrame
Columns: [A, B, label]
Index: []
我仅使用以下方法获取nan行:

df[(df.label == 'nan')]
    A  B label
0  aa  1   nan
1  bb  2   nan
3  dd  1   nan
4  ee  1   nan

我是否错误地将null值设置为字符串值'nan'?谢谢。是的
np.where
已将
np.NaN
转换为字符串,因为start是字符串:

np.where((df['B']>2), 'start', np.NaN)

#array(['nan', 'nan', 'start', 'nan', 'nan'],
#      dtype='|S32')
提供
None
作为字符串的空值:

df['label'] = np.where((df['B']>2), 'start', None)

df[df.label.isnull()]

#    A  B   label
#0  aa  1   None
#1  bb  2   None
#3  dd  1   None
#4  ee  1   None
或者使用
pd.系列。其中
方法:

df['label'] = 'start'
df['label'] = df.label.where(df.B > 2)
df[df.label.isnull()]

#   A   B   label
#0  aa  1   NaN
#1  bb  2   NaN
#3  dd  1   NaN
#4  ee  1   NaN
您可以使用应用程序:

df['label'] = df.apply(lambda x: 'start' if x.B>2 else np.nan, axis=1)

df[(df.label.isnull())]
Out[135]: 
    A  B label
0  aa  1   NaN
1  bb  2   NaN
3  dd  1   NaN
4  ee  1   NaN
或:


谢谢你的回答!
df['label'] = df.B.gt(2).apply({True:'start',False:np.nan}.get)