将groupby结果的值与新列Python Pandas中的dataframe合并

2024-04-28 02:38:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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条件的行 用相应的值填充新列。那些没有的应该保持为空。在

我正在尝试寻找一种有效的方法来实现这一点,可能是应用、转换、映射、合并或其他一些简短但没有运气的方法。在


Tags: 对象方法namedfagesize条件groupby
1条回答
网友
1楼 · 发布于 2024-04-28 02:38:51

你可以这样做:

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

相关问题 更多 >