标签: group-by

Groupby itertools 为不同的组提供相同的密钥

我按字符串中的第一个单词和最后一个单词对列表中的字符串元素进行分组。我正在使用groupbyfromitertools进行分组。该过程似乎对最后一个单词运行良好,但对第一个单词似乎效果不佳。

from itertools import groupby

model_eval_cols = ['MAD model meFuelFlowStar', 'MedAD model meFuelFlowStar', 'MAD model rpmStar', 'MedAD model rpmStar']

for k, v in groupby(model_eval_cols, key=lambda x: x.split(' ')[2]):
    print(k, list(v))
Run Code Online (Sandbox Code Playgroud)

以上输出

meFuelFlowStar ['MAD model meFuelFlowStar', 'MedAD model meFuelFlowStar']
rpmStar ['MAD model rpmStar', 'MedAD model rpmStar']
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将字符串按第一个单词分组:

for k, v in groupby(model_eval_cols, key=lambda x: x.split(' ')[0]):
    print(k, list(v))
Run Code Online (Sandbox Code Playgroud)

似乎不起作用

MAD ['MAD model meFuelFlowStar']
MedAD ['MedAD model meFuelFlowStar']
MAD ['MAD model rpmStar']
MedAD ['MedAD model rpmStar']
Run Code Online (Sandbox Code Playgroud)

这让我很惊讶,因为按键是相同的

python split group-by python-itertools

0
推荐指数
1
解决办法
1610
查看次数

Pandas groupby、求和并填充原始数据框

这是我原来的 df

import pandas as pd
df_1 = pd.DataFrame({'color': ['blue', 'blue', 'yellow', 'yellow'], 'count': [1,3,4,5]})

color   count   
blue    1   
blue    3   
yellow  4   
yellow  5   
Run Code Online (Sandbox Code Playgroud)

我想按颜色列和总和计数列进行分组,然后用结果填充原始数据框。所以最终结果应该是这样的:

df_2 = pd.DataFrame({'color': ['blue', 'blue', 'yellow', 'yellow'], 'count': [1,3,4,5], 
                     'total_per_color': [4,4,9,9]})


color   count   total_per_color
blue    1       4
blue    3       4
yellow  4       9
yellow  5       9
Run Code Online (Sandbox Code Playgroud)

我可以使用 groupby 和 sum 来完成,然后使用 pandas 进行合并,但我想知道是否有更快的方法来做到这一点?在 SQL 中可以使用 with 来实现partition,在 RI 中可以使用dplyrand 来实现mutate。熊猫身上有类似的东西吗?

group-by pandas

0
推荐指数
1
解决办法
1351
查看次数

ONLY_FULL_GROUP_BY ON 的 Symfony 查询

我想检索按名称分组的城市结果的对象集合,我的查询是

public function getDistinctCitiesName()
{
    $qb = $this->createQueryBuilder("cc");
            ->add('groupBy', 'cc.name');

    return $qb;
}
Run Code Online (Sandbox Code Playgroud)

运行时出现异常

request.CRITICAL:未捕获的 PHP 异常 Doctrine\DBAL\Exception\DriverException:“执行 'SELECT c0_.id AS id_0、c0_.name AS name_1、c0_.postal_code AS postal_code_2、c0_.country AS country_3、c0_.state 时发生异常AS state_4,c0_.visible ASvisible_5 FROM城市c0_ GROUP BY c0_.name':SQLSTATE [42000]:语法错误或访问冲突:1055 SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列'www.c0_ .id' 在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容”

我无法禁用 only_full_group_by 模式,有解决方案吗?

mysql group-by symfony doctrine-orm

0
推荐指数
1
解决办法
5591
查看次数

计算按其他两列的值分组的列的平均值

我有一个包含 5 列的数据框。我知道如何计算由另一列分组的一列的平均值。但是,我需要将其按两列分组。例如,我想计算按第 1 列和第 2 列分组的第 5 列的平均值。

\n\n
df <- structure(list(Country = structure(c(1L, 1L, 1L, 1L, 1L, 1L, \n1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, \n3L, 3L, 3L), .Label = c("AT", "CH", "DE"), class = "factor"), \n    Occupation = c(1L, 3L, 5L, 3L, 1L, 2L, 5L, 3L, 5L, 3L, 1L, \n    2L, 1L, 5L, 3L, 3L, 1L, 3L, 2L, 5L, 5L, 1L, 2L, 1L, 3L), \n    Age = c(20L, …
Run Code Online (Sandbox Code Playgroud)

group-by r

0
推荐指数
1
解决办法
4900
查看次数

Kotlin 中的嵌套 groupBy

是否可以将以下嵌套转换groupingBy为 Kotlin Collections 等效项?

运行此代码: https: //rextester.com/IYJ63609

fun main(args: Array<String>) {
    data class Person(val name: String, val city: String, val phone: String)

    val people = listOf(
            Person("John", "Boston", "+1-888-123456"),
            Person("Svyatoslav", "Saint-Petersburg", "+7-999-456700"),
            Person("Svyatoslav", "Saint-Petersburg", "+7-999-456789"),
            Person("Vasilisa", "Saint-Petersburg", "+7-999-123456"))

    val phoneBook = people.stream().collect(
      java.util.stream.Collectors.groupingBy(Person::city, 
        java.util.stream.Collectors.groupingBy(Person::name)
      )
    )
    println(phoneBook)
}
Run Code Online (Sandbox Code Playgroud)

collections group-by kotlin

0
推荐指数
1
解决办法
1408
查看次数

“INNER JOIN”和“LEFT JOIN”与“GROUP BY”

我的桌子看起来像这样

sales
----------------------------------------------------------
id  ordernumber             quantity  category_id    price
1   402-9182243-8008368     1         3              22.95
2   406-3666671-8627555     2         3               6.95
3   303-1935495-5532309     1         1               7.95
4   171-5799800-1198702     1         2             159.95
5   403-2398078-4901169     2         2              18.95

category
--------------
id  name
1   bikes
2   shoes
3   planes

returns
--------------
id  ordernumber          quantity   costs
1   402-9182243-8008368  1          22.95   
2   402-9182243-8008368              5.95   // return shipping fee
Run Code Online (Sandbox Code Playgroud)

这是我的查询

    SELECT c.name,
           SUM(v.quantity) AS sold,               # wrong
           SUM(s.quantity * s.price) AS turnover, # wrong
           SUM(r.costs) AS returncosts,
      FROM sales …
Run Code Online (Sandbox Code Playgroud)

mysql sql group-by left-join

0
推荐指数
1
解决办法
507
查看次数

为什么 MAX 语句需要 Group By?

我理解为什么第一个查询需要 a GROUP BY,因为它不知道将总和应用到哪个日期,但我不明白为什么第二个查询会出现这种情况。最终最大金额的值已包含在表中 - 它不是按原样计算的SUM。谢谢

-- First Query
select
    sum(OrderSales),OrderDates
From Orders


-- Second Query
select
    max(FilmOscarWins),FilmName
From tblFilm
Run Code Online (Sandbox Code Playgroud)

sql sql-server group-by max

0
推荐指数
1
解决办法
120
查看次数

R - 数据帧(group_by/aggregate/pivot_wider)操作

我目前在操作/聚合我的数据框时遇到问题。我当前的数据框如下:

农场 奶牛 鸭子
农场 1 2020年 22 12 100 30 25
农场 1 2020年 0 12 120 20 20
农场 1 2019年 16 6 80 10 16
农场 1 2019年 12 0 50 0 11
农场 1 2018年 8 0 0 16 0
农场 1 2018年 0 0 10 13 12
农场2 2020年 31 28 27 10 14
农场2 2020年 0 13 31 20 0
农场2 2019年 3 31 0 20 43
农场2 2019年 20 …

group-by aggregate r data-manipulation dataframe

0
推荐指数
1
解决办法
90
查看次数

如何查找分组数据帧的不同列中不同值在一列中最常见的出现?

我想这个问题不太清楚,所以这里有一个例子:给定一个数据框:

公司名称 公司规模 公司活动
7点11分 5 餐厅
7点11分 5 超级市场
7点11分 10 超级市场
高盛 100 银行
高盛 200 餐厅
高盛 200 银行

我想按公司名称对数据框进行分组,然后将organization_size和organization_acitivity列中的值替换为相应公司和列中出现次数最多的值。

所以最终数据框应该是这样的:

公司名称 公司规模 公司活动
7点11分 5 超级市场
高盛 200 银行

我试过这个:

df.groupby("organization_name",group_keys=True)["organization_activity"].apply(lambda x: x.mode())
Run Code Online (Sandbox Code Playgroud)

但它只给了我

“AttributeError:‘SeriesGroupBy’对象没有属性‘mode’”。

有人有更简单的方法来做到这一点的想法吗?

python group-by dataframe pandas

0
推荐指数
1
解决办法
95
查看次数

为什么此 Flux 的处理会无限期地挂在大小 256 上?

我需要处理来自Flux组内 (by id) 的事件,以便在单个组内按顺序处理每个事件,但并行处理组。据我所知,这可以通过groupBy和来实现concatMap。当我实现这个时,我的测试开始无限期地挂在一些大量的唯一 ID 上。我将问题与下面的代码隔离开来,并找到了代码开始挂起的特定数字 - 256。我绝对不明白为什么会发生这种情况以及从何256而来。

这是挂起的代码:

@ParameterizedTest
@ValueSource(ints = {250, 251, 252, 253, 254, 255, 256})
void freezeTest(int uniqueStringsCount) {
  var scheduler = Schedulers
      .newBoundedElastic(
          1000,
          1000,
          "really-big-scheduler"
      );
  Flux.range(0, uniqueStringsCount)
      .map(Object::toString)
      .repeat()
      // this represents "a lot of events"
      .take(50_000)
      .groupBy(x -> x)
      // this gets the same results
      // .parallel(400)
      .parallel()
      .flatMap(group ->
          group.concatMap(e ->

              // this represents a processing operation on each event
              Mono.fromRunnable(() …
Run Code Online (Sandbox Code Playgroud)

java concurrency group-by project-reactor

0
推荐指数
1
解决办法
804
查看次数