如何根据数据框的空值和值列表创建新列表?

How to create a new list based on the null values of a data frame and list of values?

我有一个数据框和列表 op,如下所示。

data = {'Name': ['Tom', 'Joseph', 'Krish', 'John'], 'Age': [20, np.nan, 19, np.nan]}  
df1=pd.DataFrame(data)
print(df1)
Name    Age
Tom     20.0
Joseph  NaN
Krish   19.0
John    NaN
op=[1,2]

现在我想创建一个基于列 'age' 的新列表。如果列 age 有一个值,那么新列表 li 应该附加 op 第一个值,如果列 age 有一个 null 那么新列表应该将该位置的值附加为 null。我怎样才能做到这一点? 尽管我试图遍历每一行以创建列表,但输出是错误的,并且 运行 需要大量时间,因为我遍历每一行。

li=[]    
for k in range(len(df1)) :
    if df1.loc[k,'Age']== np.nan:
        print('i')
        li.append(np.nan)
    else:
        for j in op:
            li.append(j)
print(li)

输出:- [1, 2, 1, 2, 1, 2, 1, 2]

预期输出:-

[1,np.nan,2,np.nan]

假设 op 的大小必然是 non-nan 年龄值的大小:

s = df1['Age'].copy()
op=[1,2]
s[s.notna()] = op
out = s.to_list()

输出:[1.0, nan, 2.0, nan]