熊貓:如何刪除熊貓數據幀中所有列的前導缺失值?
使用大熊貓數據幀的形式: A B CID 1 10 NaN NaN2 20 NaN NaN3 28 10.0 NaN4 32 18.0 10.05 34 22.0 16.06 34 24.0 20.07 34 26.0 21.08 34 26.0 22.0如何刪除不同數量的初始缺失值?最初,我想向前填充“新”列的最后一個值,所以我最終會得到這個: A B C0 10 10.0 10.01 20 18.0 16.02 28 22.0 20.03 32 24.0 21.04 34 26.0 22.05 34 26.0 22.06 34 26.0 22.07 34 26.0 22.0但我想在剩余的行上也有nans也是很自然的: A B C0 10 10.0 10.01 20 18.0 16.02 28 22.0 20.03 32 24.0 21.04 34 26.0 22.05 34 26.0 NaN6 34 NaN NaN7 34 NaN NaN以下是問題的直觀表示形式:以前:后:我提出了一個笨重的方法,使用for循環,我使用刪除前導nan,計算我刪除的值的數量(N),附加最后一個可用數字N次,并逐列構建新的數據幀。但事實證明,對于較大的數據幀來說,這是非常慢的。我覺得這已經是萬能熊貓庫的內置功能,但到目前為止我還沒有找到任何東西。有沒有人建議用一種不那么繁瑣的方式來做到這一點?df.dropna()使用示例數據集完成代碼:import pandas as pdimport numpy as np# sample dataframedf = pd.DataFrame({'ID':[1,2,3,4,5,6,7,8], 'A': [10,20,28,32,34,34,34,34], 'B': [np.nan, np.nan, 10,18,22,24,26,26], 'C': [np.nan, np.nan, np.nan,10,16,20,21,22]})df=df.set_index('ID')# container for dataframe# to be built using a for loopdf_new=pd.DataFrame()for col in df.columns: # drop missing values column by column ser = df[col] original_length = len(ser) ser_new = ser.dropna() # if leading values are removed for N rows. # append last value N times for the last rows if len(ser_new) <= original_length: N = original_length - len(ser_new) ser_append = [ser.iloc[-1]]*N #ser_append = [np.nan]*N ser_new = ser_new.append(pd.Series(ser_append), ignore_index=True) df_new[col]=ser_newdf_new
查看完整描述