我有一個資料框和串列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那么新串列應該將該位置的值附加為空。我怎樣才能做到這一點?盡管我嘗試遍歷每一行以創建串列,但輸出是錯誤的,并且在我遍歷每一行時需要大量時間來運行。
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]
uj5u.com熱心網友回復:
假設 的大小op必然是 Age 的非 nan 值的大小:
s = df1['Age'].copy()
op=[1,2]
s[s.notna()] = op
out = s.to_list()
輸出:[1.0, nan, 2.0, nan]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478286.html
