2017-02-15 76 views
3

我有一个GROUPBY物体看起来像:合并GROUPBY结果的数值与数据帧在新列的Python熊猫

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 

我想找到我原来的DF满足年龄,Pclass行,并fam_size标准列在上述groupby对象中,并且 使用相应的值填充新列。那些不应该被保留为空。

我正在尝试寻找一种有效的方法来做到这一点,可能是一个应用,转换,地图,合并或东西简短,但没有运气。

回答

1

IIUC你能做到这样:

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

你有今天在一些点重新启动解释器会话中,马克斯。 –

+1

@ juanpa.arrivillaga,我一定会做;-) – MaxU