Q1)我想做一个groupby,SQL风格的聚合并重命名输出列:
示例数据集:
>>> df
ID Region count
0 100 Asia 2
1 101 Europe 3
2 102 US 1
3 103 Africa 5
4 100 Russia 5
5 101 Australia 7
6 102 US 8
7 104 Asia 10
8 105 Europe 11
9 110 Africa 23
我想通过对这个数据集的观察进行分组,ID
并对每个组Region
求和count
。所以我用了这样的东西......
>>> print(df.groupby(['ID','Region'],as_index=False).count().sum())
ID Region count
0 100 Asia 2
1 100 Russia 5
2 101 Australia 7
3 101 Europe 3
4 102 US 9
5 103 Africa 5
6 104 Asia 10
7 105 Europe 11
8 110 Africa 23
在使用as_index=False
时,我能够获得“类似 SQL”的输出。我的问题是我无法在这里重命名聚合变量count
。所以在 SQL 中,如果想做上述事情,我会做这样的事情:
select ID, Region, sum(count) as Total_Numbers
from df
group by ID, Region
order by ID, Region
正如我们所看到的,我很容易将聚合变量重命名为count
SQL Total_Numbers
。我想在 Pandas 中做同样的事情,但在 group-by 函数中找不到这样的选项。有人可以帮忙吗?
第二个问题(更多是观察)是...
Q2) 是否可以直接在 Pandas 数据框函数中使用列名而不用引号将它们括起来?
我知道变量名是字符串,所以必须在引号内,但我看看是否在数据框函数之外使用它们,并且作为属性,我们不要求它们在引号内。df.ID.sum()
等等。只有当我们在 DataFrame 函数中使用它时,或者df.sort()
我们df.groupby
必须在引号内使用它。这实际上有点痛苦,因为在 SQL 或 SAS 或其他语言中,我们只是使用变量名而不引用它们。对此有何建议?
请回答这两个问题(Q1 是主要的,Q2 更多的意见)。