2017-01-26 4 views
2

Angenommen, ich habe einen Datenrahmen wie folgt:Pandas: Füllen rückwärts fehlende Werte auf einer anderen Spalte je

 location col2 
0  LA NaN 
1  LA 3 
2  LA 5 
3  LA NaN 
4  SF NaN 
5  SF NaN 
6  SF 7 
7  SF 6 

ich in „col2“ rückwärts nur fehlende Werte zu füllen versuche, wenn die Position in der Zeile oberhalb gleich an den Ort füllt

zum Beispiel nur nach hinten, wenn

df['location'] == df['location'].shift(-1) 

wahr ist. Also der endgültige Datenrahmen würde gerne:

location col2 
0  LA 3 
1  LA 3 
2  LA 5 
3  LA NaN 
4  SF 7 
5  SF 7 
6  SF 7 
7  SF 6 

Wie kann ich das tun?

Antwort

4

können Sie verwenden groupby() + bfill():

In [185]: df.groupby('location').col2.bfill() 
Out[185]: 
0 3.0 
1 3.0 
2 5.0 
3 NaN 
4 7.0 
5 7.0 
6 7.0 
7 6.0 
Name: col2, dtype: float64 

Einstellwerte zurück zu col2:

In [186]: df.col2 = df.groupby('location').col2.bfill() 

In [187]: df 
Out[187]: 
    location col2 
0  LA 3.0 
1  LA 3.0 
2  LA 5.0 
3  LA NaN 
4  SF 7.0 
5  SF 7.0 
6  SF 7.0 
7  SF 6.0 
+1

^^^^^ dieses ^^^^^ – piRSquared

Verwandte Themen