2017-02-15 1 views
3

ich ein groupby Objekt haben, die wie folgt aussieht:fusionieren Werte von groupby Ergebnisse mit Datenrahmen in neue Spalte Python Pandas

Age Pclass fam_size 
0.0 3  alone  11.586475 
1.0 1  alone  83.210410 
    2  alone  18.092672 
    3  alone  7.974073 
2.0 1  alone  72.784513 
    2  alone  12.058114 
    3  alone  10.317035 
3.0 1  alone  39.364014 
    2  alone  14.625000 
    3  alone  7.048491 
4.0 1  alone  36.562920 
    2  alone  10.500000 
    3  alone  7.820000 
Name: Fare, dtype: float64 

ich, dass das Alter, pClass und fam_size erfüllen wollen finden die Zeilen in meiner ursprünglichen df Kriterien wie in der obigen groupby object aufgeführt und füllen Sie eine neue Spalte mit ihren entsprechenden Werten. Diejenigen, die das nicht tun, sollten null sein.

Ich bin auf der Suche nach einer effizienten Möglichkeit, dies zu tun, möglicherweise eine Anwendung, Transformation, Karte, Zusammenführen oder etwas kurz, aber kein Glück.

Antwort

1

IIUC Sie es auf diese Weise tun können:

In [299]: df 
Out[299]: 
    a b c d 
0 1 1 1 11 
1 1 1 2 12 
2 1 2 3 13 
3 1 2 4 14 
4 2 1 5 15 

In [300]: g 
Out[300]: 
a b 
1 1 3 
    2 7 
Name: c, dtype: int64 

In [301]: df.merge(g.reset_index(), on=['a','b'], how='left', 
        suffixes=['','_'], indicator=True) \ 
      .rename(columns={'c_':'new'}) 
Out[301]: 
    a b c d new  _merge 
0 1 1 1 11 3.0  both 
1 1 1 2 12 3.0  both 
2 1 2 3 13 7.0  both 
3 1 2 4 14 7.0  both 
4 2 1 5 15 NaN left_only 
+1

Sie haben heute die Dolmetscher-Sitzung zu einem bestimmten Zeitpunkt neu zu starten, Max. –

+1

@ juanpa.arrivillaga, ich werde auf jeden Fall tun ;-) – MaxU

Verwandte Themen