Q1) 我想进行分组、SQL风格的聚合,并重命名输出列:
示例数据集:
我想按照数据集中的
使用
如我们所见,在SQL中,我很容易将聚合变量count重命名为
第二个问题(更像是一个观察):
Q2)在Pandas dataframe函数中是否可以直接使用列名而无需将其用引号括起来?
我知道变量名是字符串,所以必须放在引号中,但是我发现如果在dataframe函数之外使用它们作为属性,我们不需要将它们放在引号中。比如
请回答两个问题(Q1是主要问题,Q2是意见问题)。
示例数据集:
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 dataframe函数中是否可以直接使用列名而无需将其用引号括起来?
我知道变量名是字符串,所以必须放在引号中,但是我发现如果在dataframe函数之外使用它们作为属性,我们不需要将它们放在引号中。比如
df.ID.sum()
等等。只有当我们在DataFrame函数中使用它们时,比如df.sort()
或df.groupby
,我们必须将其放在引号中。这实际上有点麻烦,因为在SQL或SAS或其他语言中,我们只需使用变量名而无需加引号。对此有什么建议吗?请回答两个问题(Q1是主要问题,Q2是意见问题)。