2016-04-19 4 views
0

ich die Daten in bestimmten Labels fühlen weiterleiten müssen (wo Etikett in anderen Spalt definiert:nach vorne in Pandas Datenrahmen füllen basierend auf spezifische Markierung in einer Spalte

LABEL | Col1 | ffil_col | 
------------------------- 
    1 | N | female | 
    1 | M |   | 
    2 | A |   | 
    2 | N | male  | 
    2 | M |   | 

Notwendigkeit, dies zu sein:

LABEL | Col1 | ffil_col | 
------------------------- 
    1 | N | female | 
    1 | M | female | 
    2 | A |   | 
    2 | N | male  | 
    2 | M | male  | 

die einzige Idee, die ich bisher habe, ist groupby von Etikett zu verwenden, dann ffill jede Gruppe, und dann concat alles zurück. gibt es eine alternative und klare Lösung?

Antwort

2

Sie können transform auf dem groupby verwenden, das die gleiche Länge wie den ursprünglichen Datenrahmen beibehält.

df['ffil_col'] = df.groupby('LABEL').ffil_col.transform(lambda group: group.ffill()) 

>>> df 
    LABEL Col1 ffil_col 
0  1 N female 
1  1 M female 
2  2 A  NaN 
3  2 N  male 
4  2 M  male 
+0

danke, das ist einfach genial –

Verwandte Themen