- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想对某些数据执行一些pivot
操作。就像关注一样。
>>> df = pd.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two',
... 'two'],
... 'bar': ['A', 'B', 'C', 'A', 'B', 'C'],
... 'baz': [1, 2, 3, 4, 5, 6],
... 'zoo': ['x', 'y', 'z', 'q', 'w', 't']})
>>> df
foo bar baz zoo
0 one A 1 x
1 one B 2 y
2 one C 3 z
3 two A 4 q
4 two B 5 w
5 two C 6 t
>>> df.pivot(index='foo', columns='bar', values='baz')
bar A B C
foo
one 1 2 3
two 4 5 6
我知道 DolphinDB 可以在 sql 中做 pivot
。
dateValue=2007.08.01
num=500
syms = (exec count(*) from taq
where
date = dateValue,
time between 09:30:00 : 15:59:59,
0<bid, bid<ofr, ofr<bid*1.2
group by symbol order by count desc).symbol[0:num]
priceMatrix = exec avg(bid + ofr)/2.0 as price from taq
where
date = dateValue, Symbol in syms,
0<bid, bid<ofr, ofr<bid*1.2,
time between 09:30:00 : 15:59:59
pivot by time.minute() as minute, Symbol
但是如何在 clickhouse 中做 pivot
呢?我应该使用客户端 API 来获取数据吗?但是行太多了,很多行处理起来太难了。如果我不会使用pandas
,如何轻松实现pivot
操作?
最佳答案
这是可以帮助您起步的初步实现。
备注:
不支持行中的“空洞”(每列应包含值)
所有列的类型转换为普通类型(String)
引入了字段orderNum。是源列在结果中的序号(例如'bar'-column是第2个)
结果表示为具有数组类型的行和一列。数组项的顺序由 orderNum 定义。
准备测试数据:
CREATE TABLE test.pivot_test
(
orderNum Int,
s String,
values Array(String)
) ENGINE = Memory;
INSERT INTO test.pivot_test
VALUES
(1, 'foo', ['one', 'one', 'one', 'two', 'two', 'two']),
(3, 'baz', ['1', '2', '3', '4', '5', '6']),
(4, 'zoo', ['x', 'y', 'z', 'q', 'w', 't']),
(2, 'bar', ['A', 'B', 'C', 'A', 'B', 'C']);
/*
The content of table test.pivot_test:
┌─orderNum─┬─s───┬─values────────────────────────────────┐
│ 1 │ foo │ ['one','one','one','two','two','two'] │
│ 3 │ baz │ ['1','2','3','4','5','6'] │
│ 4 │ zoo │ ['x','y','z','q','w','t'] │
│ 2 │ bar │ ['A','B','C','A','B','C'] │
└──────────┴─────┴───────────────────────────────────────┘
*/
枢轴模拟:
SELECT arrayMap(x -> x.1, arraySort(x -> x.2, groupArray(value_ordernum))) as row
FROM
(
SELECT
(value, orderNum) AS value_ordernum,
value_index
FROM test.pivot_test
ARRAY JOIN
values AS value,
arrayEnumerate(values) AS value_index
/*
The result of execution the nested query:
┌─value_ordernum─┬─value_index─┐
│ ('one',1) │ 1 │
│ ('one',1) │ 2 │
│ ('one',1) │ 3 │
│ ('two',1) │ 4 │
│ ('two',1) │ 5 │
│ ('two',1) │ 6 │
│ ('1',3) │ 1 │
│ ('2',3) │ 2 │
│ ('3',3) │ 3 │
│ ('4',3) │ 4 │
│ ('5',3) │ 5 │
│ ('6',3) │ 6 │
│ ('x',4) │ 1 │
│ ('y',4) │ 2 │
│ ('z',4) │ 3 │
│ ('q',4) │ 4 │
│ ('w',4) │ 5 │
│ ('t',4) │ 6 │
│ ('A',2) │ 1 │
│ ('B',2) │ 2 │
│ ('C',2) │ 3 │
│ ('A',2) │ 4 │
│ ('B',2) │ 5 │
│ ('C',2) │ 6 │
└────────────────┴─────────────┘
*/
)
GROUP BY value_index;
/*
The final result:
┌─row─────────────────┐
│ ['two','A','4','q'] │
│ ['one','C','3','z'] │
│ ['one','B','2','y'] │
│ ['two','B','5','w'] │
│ ['one','A','1','x'] │
│ ['two','C','6','t'] │
└─────────────────────┘
*/
关于database - 如何像在dolphindb中一样在clickhouse中实现 `pivot`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56074216/
我想在 DolphinDB 的流聚合器中使用用户定义的函数。 但是它返回一个异常,我不知道如何处理它: def mymid(vec){ return (first(vec) + last(ve
在dolphindb中,我有没有办法对数据进行分页,比如从一个表的100到200行中获取数据,就像mysql中的select * from table limit 100,100一样? 最佳答案 在
在 DolphinDB 中,我想编写一个函数,该函数接受表 t 和字符串 colName 作为参数,并根据 t< 运行 SQL 查询 和 colName。我的代码是这样的: def doQuery(t
如何删除dfs表中的重复数据? 我使用以下脚本创建了一个包含一些重复数据的 dfs 表: login("admin", "123456") if(existsDatabase("dfs://compo
t=table(1 2 3 as x, `A`B`C as y, 1.4 1.5 1.6 as z) 我需要获取第一行并将其转换为向量。 t[0] 会给我一本字典。 t[0].values() 返回
如何知道 DolphinDB 数据库中有多少个分区分布了一个表?例如,如果我创建了一个有100个分区的数据库,而数据库中的一个表只有4个分区的数据,我如何得到4的数量? 最佳答案 这将: sqlDS(
我有一个包含三列的表:数据、代码和因子。 对于每个“代码”,即 A 或 B,我想用相同的因子填充每五个记录。 以代码A为例,从2021.01.02开始,我想在接下来的四条记录中填充与第一条记录相同的因
假设基值为 x,我想创建一个向量 [1, x, x** 2, x** 3,.... , x**n-1] 其中第 i 个元素是习。 我知道在 Python 中它可以用列表来实现。对于 x=5 和 n=1
我的文本文件中有 15 列:symbol、permno、datetime、price1、...、price6、qty1、...、qty6。我想将以下列加载到 DolphinDB 中:symbol、pe
我创建了一个分区表。例如: n=1000000 month=take(2000.01M..2016.12M, n) x=rand(1.0, n) t=table(month, x) db=databa
我正在使用 DolphinDB 计算 Greeks ,我是用矢量化的方式写的,性能相当不错。但是我不能以向量化的方式实现隐含波动率,这使得性能很差。如何提高以下实现的性能? def GBlackSch
我有以下数据库, m = "tag" + string(decimalFormat(1..1000,'0000')) tableSchema = table(100:0,`devID`
在MySQL中,我可以使用DROP TABLE命令来完全删除变量中的数据。在dolphindb中,哪个命令可以让我做同样的事情? 最佳答案 t=table(1 2 3 作为 x, 4 5 6 作为 y
用于连接表的 DolphinDB 函数是什么,例如 Python 中的 concat()? DolphinDB 的 SQL 连接函数都是关于合并表,而不是连接表。 最佳答案 请使用函数unionAll
在python中,我可以使用index来查找元素的索引,例如: # vowels list vowels = ['a', 'e', 'i', 'o', 'i', 'u'] # index of 'e'
由于一个硬盘的存储容量有限,我想为我的dolphindb数据节点配置多个存储硬盘。我应该如何配置它们? 最佳答案 请为数据节点设置参数volumes。如果您想配置多个磁盘,只需将路径放在那里并用逗号分
这个函数非常有用,在Matlab和Numpy中都支持,但是我在DolphinDB的帮助页面上没有找到这个函数。 DolphinDB 中是否有任何等效的功能? 最佳答案 def repmatrix(m,
我想对 industryCode 列执行一次性编码,并保留下表中的所有其他列。 t = table(2022.08.01 2022.08.02 2022.08.03 as date, 000001.S
在 MySQL 中,我有 2 个表定义如下: DROP TABLE IF EXISTS `tbl_monitor`; CREATE TABLE `tbl_monitor` ( `id` bigint
在mysql中,我可以连接多个表或者过滤一个表中的一些数据来创建 View 。我不想通过操作 View 来破坏真实表的数据。我想在 DolphinDB 中创建这样的 View 。我应该如何实现它们?
我是一名优秀的程序员,十分优秀!