当前位置: 首页 > 面试题库 >

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

孟花蜂
2023-03-14
问题内容

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

使用pandas GroupBy.agg()对同一列进行多次聚合 (3个答案)

去年关闭。

示例数据集:

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


问题答案:

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

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

要么

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

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

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



 类似资料:
  • 问题内容: 我可以使用此查询找出重复的数据 我能够获取重复数据。我只需要知道如何使用名称将重复数据重命名为 new 问题答案: 假设您在表上有某种主键,例如自动增量ID,则可以执行以下操作。 为了说明,它将查找重复的任何内容,为该集中的所有内容获取最大ID,并在其末尾附加“副本1”。如果您有3次或多次使用某些名称,则可能仍会留下一些重复项。只需再次运行它,这次使用“副本2”而不是“副本1”。继续重

  • 问题内容: 我正在尝试使用以下SQL表达式重命名MySQL社区服务器5.5.27中的列: 我也试过 但它说: 错误:检查与您的MySQL服务器版本相对应的手册 问题答案: 使用以下查询: 该功能在Oracle数据库中使用。 注意用于MySQL的反引号,而双引号用于Oracle的语法。 另请注意,MySQL 8.0可能不接受反引号。在这种情况下,不带反引号的情况下执行查询,它可能会起作用。 @ la

  • 问题内容: 我的表有一堆列,格式如下: 我想重命名它们只是添加一个前缀,如下所示: 我有 很多 比三列更用这种方式来命名。如果我只有三个人,那我会手动一个接一个地做。 实现这一目标的最快/最有效的方法是什么? 问题答案: …对于所有此类批量管理操作,您可以使用PostgreSQL系统表为您生成查询,而无需手动编写查询 在您的情况下,它将是: 这将为您提供一组字符串,这些字符串是SQL命令,例如:

  • 我想在sqlite中重命名列。我为一些列创建了两个带空格的单词标题,这些标题稍后会产生问题(例如而不是。 以前,这似乎是不可能的链接。但是几个月前的一个版本似乎包含了选项链接。 然而,这似乎不起作用。 查询将生成以下错误消息: 我为列名添加了引号,以防出现空格问题: 但也会出现同样的错误。 此解决方案提示重命名是可能的。但只重命名表(这很好),而不重命名列。

  • 函数名称:重命名文件 函数功能: 修改文件名称 函数方法 flag = file.writeString (path,name) 参数 类型 必填 说明 path string 是 需要修改的文件路径 str string 是 修改后的文件名称 返回值 类型 说明 flag boolean true - 修改成功,false - 修改失败 函数用例 path = "/sdcard/LuaBox/P