首页 > 解决方案 > groupby 数据框和原始数据框之间的左合并带来外部合并

问题描述

今天的一个简单问题,可能与 DataFrame 和来自它的分组数据帧之间的交互有关。

问题是我有一个具有name, genderfoo变量的 DataFrame,如下所示:

name    gender   foo
John      M       a
James     M       b
Jenny     F       c
John      M       d

我想要做的是获得一个包含每个名字的出现次数及其性别的 DataFrame。我试过这个:

df2=df.groupby('name', as_index=False).count()[['name','foo']]
aux=df[['name','gender']]
df2=df2.merge(aux, on='name', how='left')

但这会带来一个与原始 DataFrame 具有相同行数的 DataFrame(在此示例中为四个而不是三个)。这应该相当简单,所以,我错过了什么?

标签: pythonpandasdataframe

解决方案


所以让我们使用agg

df.groupby('name',as_index=False).agg({'gender':'first','foo':'count'})
    name gender  foo
0  James      M    1
1  Jenny      F    1
2   John      M    2

推荐阅读