基于特定列中存在的NaN,在python dataframe中创建一个新列
我和NaNs有一个数据帧基于特定列中存在的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
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)
如果答案有帮助,记得接受它。谢谢