Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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
基于特定列中存在的NaN,在python dataframe中创建一个新列_Python_Pandas_Dataframe_Na - Fatal编程技术网

基于特定列中存在的NaN,在python dataframe中创建一个新列

基于特定列中存在的NaN,在python dataframe中创建一个新列,python,pandas,dataframe,na,Python,Pandas,Dataframe,Na,我和NaNs有一个数据帧 df = pd.DataFrame({"A": [10,20,30, np.nan], "B": [20, np.nan, 10,np.nan]}) A B 0 10.0 20.0 1 20.0 NaN 2 30.0 10.0 3 NaN NaN 我想创建一个新的列“C”。 在任何一行中,如果列“A”或“B”具有NaN,则列“C”将设置为0或1 我想得到如下信息: A B C 0 10.0 20.0

我和NaNs有一个数据帧

df = pd.DataFrame({"A": [10,20,30, np.nan], "B": [20, np.nan, 10,np.nan]})

     A     B
0  10.0  20.0
1  20.0   NaN
2  30.0  10.0
3   NaN   NaN
我想创建一个新的列“C”。 在任何一行中,如果列“A”或“B”具有NaN,则列“C”将设置为0或1

我想得到如下信息:

      A     B  C
0  10.0  20.0  1
1  20.0   NaN  0
2  30.0  10.0  1
3   NaN   NaN  0
我尝试了以下代码:

df['C'] = df.apply(lambda row:0 if (row['A']=='NaN' or row['B']=='NaN')  else 1, axis=1)
我得到下面的df。列C始终设置为1

      A     B  C
0  10.0  20.0  1
1  20.0   NaN  1
2  30.0  10.0  1
3   NaN   NaN  1
还尝试了以下代码:

df['C'] = df.apply(lambda row:0 if (row['A'].isnull() or row['B'].isnull())  else 1, axis=1)
获取以下错误

AttributeError: ("'float' object has no attribute 'isnull'", 'occurred at index 0')

使用
notnull
+
all

df['C'] = df.notnull().all(1).astype(int)    
df

      A     B  C
0  10.0  20.0  1
1  20.0   NaN  0
2  30.0  10.0  1
3   NaN   NaN  0

这很有效。我的数据框中有更多的列。我不想使用所有列,但我只想检查NaN的特定列。如何指定它们?@mnr
cols=['A','B',…];df['C']=df[cols].notnull().all(1).astype(int)
如果答案有帮助,记得接受它。谢谢