Python 如果条件为“无”,如何处理丢失的数据?

Python 如果条件为“无”,如何处理丢失的数据?,python,pandas,if-statement,missing-data,nonetype,Python,Pandas,If Statement,Missing Data,Nonetype,如果缺少age的值,我想创建一个值为1的变量。相反,在Value列的输出中,所有内容都是None raw_data1 = {'id': [1,2,3,5], 'age': [0, np.nan, 10, 2]} df1 = pd.DataFrame(raw_data1, columns = ['id','age']) def my_test(b): if b is None: return 1 df1['Value'] = df1.apply(lambda

如果缺少
age
的值,我想创建一个值为
1
的变量。相反,在
Value
列的输出中,所有内容都是
None

raw_data1 = {'id': [1,2,3,5],
    'age': [0, np.nan, 10, 2]}
df1 = pd.DataFrame(raw_data1, columns = ['id','age'])


def my_test(b):
    if b is None:
        return 1


df1['Value'] = df1.apply(lambda row: my_test(row['age']), axis=1)  

如何实施?我知道有几种方法,但我想重点介绍函数的使用(
defmy_test
等)

如果我理解正确,您可以使用:

df1['value'] = np.where(df1['age'].isnull(), 1, '')
输出:

   id   age value
0   1   0.0      
1   2   NaN     1
2   3  10.0      
3   5   2.0      

您可以为此使用
map

df1['Value'] = df1['age'].map(lambda x : 1 if np.isnan(x) else np.nan)
如果你想使用你的函数,你可以像这样使用
map

def my_test(b):
    if np.isnan(b):
        return 1
    else:
        return np.nan

df1['Value'] = df1['age'].map(lambda x : my_test(x))
您可以使用
row.get('age')
而不是
row['age']

如果
age
不在dict中,则
get()
返回null

>>> df1.value = df1.age.isna().astype(int)
>>> df1
    id   age  value
 0   1   0.0      0
 1   2   NaN      1
 2   3  10.0      0
 3   5   2.0      0

如果
b
不是
None
,则
my\u test
方法将返回
None
。在
if
后面添加
返回b
应该可以解决这个问题。你的意思是这样吗?如果返回b为无:(这不起作用,谢谢)