如何根据数据框的空值和值列表创建新列表?
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]
我有一个数据框和列表 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]