python 将PandasDataFrame分组到列上,并对其求和,同时保留求和观测的数量

mhd8tkvw  于 2023-01-16  发布在  Python
关注(0)|答案(1)|浏览(124)

我有一个Pandas的数据框,看起来像这样:

import pandas as pd
df = pd.DataFrame({'id':[1, 1, 2, 2], 'comp': [-0.10,0.20,-0.10, 0.4], 'word': ['boy','girl','man', 'woman']})

我想将 Dataframe 分组到id上,计算相应comp的总和,并获得一个名为n_obs的新列,该列跟踪总计了多少行(id)。
我试着使用df.groupby('id').sum(),但这并不能产生我想要的结果。
我想在下面的形式输出:

id   comp   n_obs
1    0.1    2
2    0.3    2

我该怎么做有什么建议吗?

z0qdvdin

z0qdvdin1#

您可以将.groupby().agg()一起使用:

df.groupby("id").agg(comp=("comp", "sum"), n_obs=("id", "count"))

这将输出:

comp  n_obs
id
1    0.1      2
2    0.3      2

相关问题