使用Python Pandas将groupby结果的值合并到新列中的数据框。

3

我有一个类似于以下的groupby对象:

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 中满足以上 groupby 对象中列出的 age、Pclass 和 fam_size 标准的行,并在新列中填入它们对应的值。那些不符合条件的行应该保持为空。
我正在尝试寻找一种高效的方法来实现这个目标,可能是应用、转换、映射、合并或其他简短的方式,但是没有成功。
1个回答

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
你必须在今天某个时候重新启动那个解释器会话,Max。 - juanpa.arrivillaga
1
@juanpa.arrivillaga,我一定会的;-) - MaxU - stand with Ukraine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接