对整个数据帧进行分组与对数据帧的列子集进行分组

问题描述 投票:0回答:1

我正在一个代码库中工作,我看到很多像这样的 groupby 用法,它们对

df

的列的子集进行操作
df[cols].groupby(some_column).nunique()[column2extract]

其中

cols
包括
some_column
column2extract
,并且在大多数情况下
cols = [some_column, column2extract]

从功能上来说,我认为这相当于

df.groupby(some_column).nunique()[column2extract]

前者有什么我应该注意的优点吗?我在这个代码库中经常看到这种情况,我觉得我可能遗漏了一些东西。

实际上,我认为 2 仅当

cols = [some_column, column2extract]
时等效,而当
cols
包含附加列时不一定等效

python pandas dataframe group-by
1个回答
0
投票

首先,

(...).groupby(some_column).nunique()[column2extract]
似乎浪费资源。您将计算所有列的
nunique
,然后对感兴趣的列建立索引。

这应该是:

(...).groupby(some_column)[column2extract].nunique()

所以,如果

df[cols].groupby(some_column).nunique()[column2extract]
cols
column2extract+[some_column]
可能会更好。

df[cols].groupby(some_column).(...)
的唯一优点是如果
some_column
是外部Series而不是属于
df
一部分的列名称。

因此,在我看来,最好的是:

df.groupby(some_column)[column2extract].nunique()
© www.soinside.com 2019 - 2024. All rights reserved.