假設我有 3 個不同的列
Column1 Column2 Column3
0 a 1 NaN
1 NaN 3 4
2 b 6 7
3 NaN NaN 7
并且我想創建 1 個最終列,該列將采用不是 NA 的第一個值,從而導致:
Column1
0 a
1 3
2 b
3 7
我通常會使用自定義應用函式來做到這一點:
df.apply(lambda x: ...)
我需要為具有數百萬行的許多不同情況執行此操作,這變得非常慢。是否有任何操作可以利用矢量化來加快速度?
uj5u.com熱心網友回復:
回填缺失值并選擇第一列 by[]為一列DataFrame或不為Series:
df1 = df.bfill(axis=1).iloc[:, [0]]
s = df.bfill(axis=1).iloc[:, 0]
uj5u.com熱心網友回復:
您可以為此使用pd.fillna(),如下所示:
df['Column1'].fillna(df['Column2']).fillna(df['Column3'])
輸出:
0 a
1 3
2 b
3 7
對于超過 3 列,可以將其放置在如下的 for 回圈中,new_col作為您的輸出:
new_col = df['Column1']
for col in df.columns:
new_col = new_col.fillna(df[col])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357474.html
