重命名Pandas Groupby函数中的列名[重复]
这个问题已经在这里有了答案 :
使用pandas GroupBy.agg()对同一列进行多次聚合 (3个答案)
去年关闭。
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-like”输出。我的问题是我无法在此处
重命名聚合变量count
。因此,在SQL中,如果想做上述事情,我会做这样的事情:
select ID, Region, sum(count) as Total_Numbers
from df
group by ID, Region
order by ID, Region
正如我们看到的,它很容易让我
集合变量命名count
,以Total_Numbers
在SQL。我想在Pandas中做同样的事情,但是在group-
by函数中找不到这样的选项。有人可以帮忙吗?
第二个问题(更多是观察结果)是…
Q2)是否可以在Pandas数据框函数中直接使用列名而不用引号引起来?
我知道变量名是字符串,因此必须在引号内,但是我知道是否在数据框函数外部使用它们,并且作为属性,我们不需要它们在引号内。像df.ID.sum()
等。只有当我们在DataFrame函数中使用它时,df.sort()
或者df.groupby
必须在引号内使用它时。实际上,这有点麻烦,因为在SQL或SAS或其他语言中,我们仅使用变量名而不引用它们。有什么建议吗?
请回答两个问题(Q1是主要问题,Q2更多是意见)。
-
对于第一个问题,我认为答案是:
<your DataFrame>.rename(columns={'count':'Total_Numbers'})
要么
<your DataFrame>.columns = ['ID', 'Region', 'Total_Numbers']
至于第二个,我会说答案是否定的。由于python数据模型,可以像’df.ID’一样使用它:
将属性引用转换为此字典中的查找,例如mx等效于m。 字典 [“ x”]