重命名Pandas Groupby函数中的列名[重复]

发布于 2021-01-29 15:09:35

这个问题已经在这里有了答案

使用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和对这个数据集的观察进行分组Regioncount并对每个组求和。所以我用了这样的东西…

>>> 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更多是意见)。

关注者
0
被浏览
121
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    对于第一个问题,我认为答案是:

    <your DataFrame>.rename(columns={'count':'Total_Numbers'})
    

    要么

    <your DataFrame>.columns = ['ID', 'Region', 'Total_Numbers']
    

    至于第二个,我会说答案是否定的。由于python数据模型,可以像’df.ID’一样使用它:

    将属性引用转换为此字典中的查找,例如mx等效于m。 字典 [“ x”]



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看