这是我的代码:
import StringIO
from pandas import *
import numpy as np
df = read_csv(StringIO.StringIO('''Col1 Col2 A B
A D 1 6
A E 2 7
B D 3 8
B E 4 9
C D 5 19'''), delimiter='\t')
df['buc1'] = cut(df['A'], bins = [0, 2, 6, 8])
aggFunc = {'A': sum,
'B': np.average
}
Run Code Online (Sandbox Code Playgroud)
运行后:
df.groupby(['buc1']).agg(aggFunc)
Run Code Online (Sandbox Code Playgroud)
我得到:
A B
buc1
(0, 2] 3 6.5
(2, 6] 12 12.0
(6, 8] NaN NaN
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我有一个sfPOLYGON 几何类型的对象。我想使用分组属性 (group_attr) 将这些多边形聚合到 MULTIPOLYGON 中,并将新的 MULTIPOLYGON 对象与属性表连接起来。因此,作为结果,我将拥有一个sf两行三列的对象(group_attr、second_attr、geometry)。我已经尝试过使用st_cast- 它适用于sfc对象,但不适用于sf对象。是否可以使用sf包来做到这一点?
p1 <- rbind(c(0,0), c(1,0), c(3,2), c(2,4), c(1,4), c(0,0))
pol1 <-st_polygon(list(p1))
p2 <- rbind(c(3,0), c(4,0), c(4,1), c(3,1), c(3,0))
pol2 <-st_polygon(list(p2))
p3 <- rbind(c(4,0), c(4,1), c(5,1), c(5,0),c(4,0))
pol3 <-st_polygon(list(p3))
p4 <- rbind(c(3,3), c(4,2), c(4,3), c(3,3))
pol4 <-st_polygon(list(p4))
d <- data.frame(group_attr = c(1, 1, 2, 2),
second_attr = c('forest', 'forest', 'lake', 'lake'))
d$geometry <- st_sfc(pol1, pol2, pol3, pol4)
df<- st_as_sf(d)
plot(df)
df …Run Code Online (Sandbox Code Playgroud) 我需要通过 mongodb 聚合管道内的 mallId 对投票内的对象进行分组。多年来一直在寻找答案,但我对 mongodb 不太熟悉,所以我有点迷茫。谁能帮我吗?
[
{
"_id": "Specialty Retailer",
"votes": [
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 13
},
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 270
},
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 13
},
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 2
},
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 15
},
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 2
}
]
}
]
Run Code Online (Sandbox Code Playgroud) 我有一个 MongoDB 查询,它根据日期按 5 分钟窗口进行分组并返回计数(这是使用 5 分钟窗口中的文档总数count: { $sum: 1 })。
如果该组中不存在文档,我希望查询也为特定的 5 分钟窗口返回 0 计数。但目前看来,仅返回计数为正的组。
当前查询:
const cursor = await collection.aggregate([
{ $sort : { time : 1 } },
{
$match: {
$and: [
{selector: string },
{time: {$gte: timestamp }}
]
}
},
{
$group: {
_id: {
$subtract: [
{ $subtract: [ "$time", 0 ] },
{ $mod: [
{ $subtract: [ "$time", 0 ] },
1000 * 60 * 5
]}
],
}, …Run Code Online (Sandbox Code Playgroud) 我有两个收藏
带架构
{
a : Array,
b : ObjectID
}
Run Code Online (Sandbox Code Playgroud)
和 B 具有以下架构
{
x : 'string',
y : // some object schema
...
b : ObjectID
}
Run Code Online (Sandbox Code Playgroud)
我想使用 mongo 聚合在集合 B 中添加一个新字段,以仅包含使用 b 搜索的集合 A 中的 a。
我希望聚合后的值具有以下架构:
{
x : 'string',
newField : a // array from collection A
y : // some object schema
...
b : ObjectID
}
Run Code Online (Sandbox Code Playgroud)
只有 $lookup 不起作用,因为我不想要整个对象,并且合并将删除 _id 并合并我不想要的其他对象。
我在 R 中有一个数据框,通常采用这种形式:
ID Year Amount
3 2000 45
3 2000 55
3 2002 10
3 2002 10
3 2004 30
4 2000 25
4 2002 40
4 2002 15
4 2004 45
4 2004 50
Run Code Online (Sandbox Code Playgroud)
我想按 ID 对每年的金额求和,并使用此输出获取新的数据框。
ID Year Amount
3 2000 100
3 2002 20
3 2004 30
4 2000 25
4 2002 55
4 2004 95
Run Code Online (Sandbox Code Playgroud)
这是我需要做的一个例子,实际上数据要大得多。请帮忙,谢谢!
我的视觉对象的 x 轴是按月聚合的日期,y 轴是总销售额(成本总和)。有几个月,我没有销售,但 Quicksight 忽略了这些,只向我显示其中确实有数据的月份,即使我想要我在时间范围参数中指定的确切月份数。
因此,当我要求显示过去 12 个月时,Quicksight 只显示了 4 个,因为其他 8 个我没有任何记录。
我怎样才能让这些月份显示为 0,而不是完全被排除在外?
由于我的分析依赖于选择特定的产品代码并仅获取其总和,因此我取消了过滤器,而是使用了以下计算字段:
sumIf(sales, productCode = $productCodeParam$).
我想这种方法也适用于非常小的数据集,如果你想使用 sumIf 并在那里列出你的所有类别,但否则,通过过滤数据省略你没有任何结果为 0,因为 Quicksight 不会评估sum(null + null)为 0。
不,这不是重复问题。我有很多关于这个主题的资料,但我仍然觉得我没有完全理解它。
这是我迄今为止所掌握的关于什么是聚合和聚合根的信息(来自多个来源,无论是文章、视频等......):
考虑到所有这些,让我们进入我感到困惑的部分:
在这个网站上它说
聚合根是与外部世界的接口。与聚合的所有交互都是通过聚合根进行的。因此,聚合根必须在系统内具有全局唯一标识符。存在于聚合中但不是聚合根的其他实体仅需要本地唯一标识符,即聚合内唯一的 Id。
但是,在这个示例中,我可以看到聚合根是由充当Transfer聚合的静态类和名为TransferedRegisteredAR 的内部静态函数实现的。
所以问题是:
如果某些/全部错误,请在开始时纠正我的任何要点,如果我遗漏了任何要点,请随时添加更多!
感谢您澄清事情!
我有一个查询,它利用 $lookup 的管道功能,并且还使用 $expr。嗯,它可以工作,但性能不是很好。它在包含大约 4000 个文档的集合中查找内容,并连接其他 2 个集合(使用 $lookup 块)。尽管每个集合中只有几千个文档,但运行时间大约为 2000 毫秒。
该查询看起来像这样:
{
$match: {
language: 'str'
}
},
{
$lookup: {
from: 'somecollection',
let: { someId: '$someId' },
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
'$_id',
'$$someId'
]
},
{
$gte: ['$field',value]
},
{
$lte: ['$field2',value]
}
....
// some more conditions..
]
}
}
}
]
Run Code Online (Sandbox Code Playgroud)
对此运行解释()仅提供有关第一个 $match 块的信息。但是如何判断管道中的 $expr 是否使用索引呢?
我尝试向管道中使用的所有字段添加索引,并且还尝试创建复合索引,但我无法使其更快。
我怎样才能提高性能?
我的查询的结构:
match (filter by language),
lookup (col1 join)
lookup …Run Code Online (Sandbox Code Playgroud) 我想对 json_arrayagg() 返回的数组进行排序。我的查询与此类似:-
select A, json_arrayagg(json_obj('X',value1, 'Y',value2)) AS RESULT
FROM (derived table)
GROUP BY A.
Run Code Online (Sandbox Code Playgroud)
我想要的是我希望返回的数组按 value2 排序。我尝试在末尾添加 order by 子句(例如 order by value2:它不起作用)
已尝试在 json_arrayagg() 内部添加 order by ..(例如: json_arrayagg(json_obj() order by value2) 它不起作用。
已尝试使用 group_concat ,但它不可靠,并且不知道为什么它没有返回正确的数据。已检查限制。
请建议我如何解决这个问题?谢谢