我按字符串中的第一个单词和最后一个单词对列表中的字符串元素进行分组。我正在使用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)
这让我很惊讶,因为按键是相同的
这是我原来的 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。熊猫身上有类似的东西吗?
我想检索按名称分组的城市结果的对象集合,我的查询是
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 模式,有解决方案吗?
我有一个包含 5 列的数据框。我知道如何计算由另一列分组的一列的平均值。但是,我需要将其按两列分组。例如,我想计算按第 1 列和第 2 列分组的第 5 列的平均值。
\n\ndf <- 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) 是否可以将以下嵌套转换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) 我的桌子看起来像这样
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) 我理解为什么第一个查询需要 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) 我目前在操作/聚合我的数据框时遇到问题。我当前的数据框如下:
| 农场 | 年 | 奶牛 | 鸭子 | 鸡 | 羊 | 马 |
|---|---|---|---|---|---|---|
| 农场 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 … |
我想这个问题不太清楚,所以这里有一个例子:给定一个数据框:
| 公司名称 | 公司规模 | 公司活动 |
|---|---|---|
| 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’”。
有人有更简单的方法来做到这一点的想法吗?
我需要处理来自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) group-by ×10
dataframe ×2
mysql ×2
pandas ×2
python ×2
r ×2
sql ×2
aggregate ×1
collections ×1
concurrency ×1
doctrine-orm ×1
java ×1
kotlin ×1
left-join ×1
max ×1
split ×1
sql-server ×1
symfony ×1