python - groupby 数据框和原始数据框之间的左合并带来外部合并
问题描述
今天的一个简单问题,可能与 DataFrame 和来自它的分组数据帧之间的交互有关。
问题是我有一个具有name
, gender
和foo
变量的 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(在此示例中为四个而不是三个)。这应该相当简单,所以,我错过了什么?
解决方案
所以让我们使用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