【发布时间】:2013-10-31 15:25:21
【问题描述】:
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
正如我们所见,在 SQL 中将聚合变量 count 重命名为 Total_Numbers 对我来说非常容易。我想在 Pandas 中做同样的事情,但在 group-by 函数中找不到这样的选项。有人可以帮忙吗?
第二个问题(更多是观察)是是否……
Q2) 是否可以直接在 Pandas 数据框函数中使用列名而不用引号括起来?
我知道变量名是字符串,所以必须在引号内,但我看看是否在数据框函数之外使用它们,并且作为属性,我们不要求它们在引号内。像df.ID.sum() 等。只有当我们在像df.sort() 或df.groupby 这样的DataFrame 函数中使用它时,我们必须在引号内使用它。这实际上有点痛苦,因为在 SQL 或 SAS 或其他语言中,我们只是使用变量名而不引用它们。对此有何建议?
请回答两个问题(Q1 是主要的,Q2 更多的意见)。
【问题讨论】:
标签: python pandas group-by pandas-groupby rename