如果缺少age
的值,我想创建一个值为1
的变量。相反,所有内容都是None
列的输出中的Value
。
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)
如何实施?我知道有几种方法,但是我想重点介绍函数的使用(def my_test
等)。
答案 0 :(得分:3)
如果我对您的理解正确,则可以使用:
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
答案 1 :(得分: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))
答案 2 :(得分:0)
您可以使用row.get('age')
代替row['age']
。
get()
不在字典中,则 age
返回null
答案 3 :(得分:0)
相反,
>>> 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