2014-11-19 37 views

cevap

26

@Woody Pride tarafından önerilen for döngüsü gereksizdir. Sen bunu azaltabilir:

cols = ['X', 'Y'] 
df[cols] = df[cols].ffill() 

Ve ben de bir öz içeren örnek ekledik:

>>> import pandas as pd 
>>> import numpy as np 
>>> 
>>> #%% create dataframe 
... ts1 = [0, 1, np.nan, np.nan, np.nan, np.nan] 
>>> ts2 = [0, 2, np.nan, 3, np.nan, np.nan] 
>>> d = {'X': ts1, 'Y': ts2, 'Z': ts2} 
>>> df = pd.DataFrame(data=d) 
>>> print(df.head()) 
    X Y Z 
0 0 0 0 
1 1 2 2 
2 NaN NaN NaN 
3 NaN 3 3 
4 NaN NaN NaN 
>>> 
>>> #%% apply forward fill 
... col = ['X', 'Y'] 
>>> df[col] = df[col].ffill() 
>>> print(df.head()) 
    X Y Z 
0 0 0 0 
1 1 2 2 
2 1 2 NaN 
3 1 3 3 
4 1 3 NaN 

(Normalde @Woody Pride tarafından cevap yorumladı olurdu, ama ben temsilcisi yok.

2
for col in ['X', 'Y']: 
    df[col] = df[col].ffill() 
İlgili konular