我试图在功能更新中使用一些lambdas.简单的例子就是
parse "update cfoo:foo'[c] from t"
!
`t
falseb
,`cfoo!,((`func;`foo);`c)
Run Code Online (Sandbox Code Playgroud)
那个解析树中的`func是什么?我需要在下面更换它?
![`t;();0b;(enlist `cfoo)!enlist ((`func;`foo);`c)]
Run Code Online (Sandbox Code Playgroud) 以符号作为键的 KDB 字典的联合连接正在工作,但当键更改为 long 类型时;字典连接不起作用?
Q码
k1:`1`2`3
v1: 1 2 3
k2:`2`3`4
v2:2 3 4
//works
(enlist k1!v1) uj (enlist k2!v2)
k1:1 2 3
v1:1 2 3
k2:2 3 4
v2:2 3 4
//not working
(enlist k1!v1) uj (enlist k2!v2)
why key list type change is not acceptable?
Run Code Online (Sandbox Code Playgroud) 我有带date;sym列的表。但是每个日期可能有多个符号。我想对每个日期中符号的出现次数进行编号
例如:
date sym
-------------------
2019.06.04 ABC
2019.06.04 DEF
2019.06.04 ABC
2019.06.05 DEF
2019.06.05 ABC
Run Code Online (Sandbox Code Playgroud)
会给我
date sym c
-------------------
2019.06.04 ABC 1
2019.06.04 DEF 1
2019.06.04 ABC 2 / here ABC appears for the second time on this date.
2019.06.05 DEF 1
2019.06.05 ABC 1
Run Code Online (Sandbox Code Playgroud) 我知道这里已经回答了这个问题,但是作为一个新的 q-bie,我仍然对如何使用 q 创建和插入新表感到困惑。
我的问题:我有一个数据框,我正在使用 qPython 连接到 kdb。我想将此数据帧作为新表写入 kdb。
我的问题:似乎我可以做这样的事情:
df = pd.DataFrame({'sym':['abc','def','ghi'],'price':[10.1,10.2,10.3]})
with qconnection.QConnection(host = 'localhost', port = 5001, pandas = True) as q:
q.sync('{t::x}',df)
Run Code Online (Sandbox Code Playgroud)
但{t::x}这里是什么?不会是我的表名吗?x 会是什么?
如何指定列类型和大小限制或不需要它们?谢谢!
我是 KDB+ 和 q 的新手,想知道如何添加两个字符串来组成一个句子。
例如,我怎么会加入w1:"Hello"到w2:"World"作出新的字符串"Hello World"
缓慢的消费者能否杀死或减慢滴答作响的速度?
我有一个自动收报机,有 3 个实时订阅者,其中一个订阅者很慢。
q).z.W
7 | `long$()
8 | 969393 198 198 197 197 198 196 199 197 196 143 198 196 196 197 197 198 19..
9 | 199 198 198 143 197 199 197 197 197 197 199 196 199 145 196 198 198 198 1..
10| 198 196 198 144 199 198 198 198 196 197 196 199 198 143 199 198 197 198 1..
q)count each .z.W
7 | 0
8 | 85547
9 | …Run Code Online (Sandbox Code Playgroud) 这可能是一个简单的问题,但我无法让它发挥作用。我想创建一个列varNew,等于一列的一半Price,如果只有一个列var1,并var2具有1的值,var1并且var2只需要0或1。如果两个数值var1和var2是1,那么varNew = Price。所以想要的数据看起来像这样
var1 var2 Price varNew
0 0 10 10
0 1 14 7
1 0 12 6
1 1 20 20
Run Code Online (Sandbox Code Playgroud)
我试过:
update varNew:?[((var1+var2)>0);Price%2;Price] from table 和
varNew:?[(var1=1 and var2=0)|(var1=0 and var2=1);Price%2;Price] from table 和
varNew:?[var1=1 or var2=1;Price%2;Price] from table
但它们没有按预期工作。特别是,它返回 12 而不是 6。这是怎么回事?为什么这些条件不起作用?我该怎么做?
来自 KX:https : //code.kx.com/q/ref/value/说,whenx是一个列表,value[x]将作为解析树评估列表的结果。
一季度。在下面的代码中,我理解 (A) 是一个解析树,定义如下。但是,为什么(B)也有效?是("+";3;4)一个有效的解析树吗?
q)value(+;3;4) / A
7
q)value("+";3;4) / B
7
q)eval(+;3;4) / C
7
q)eval("+";3;4) / D
'length
[0] eval("+";3;4)
Run Code Online (Sandbox Code Playgroud)
任何其他解析树都采用列表的形式,其中第一项是函数,其余项是其参数。这些项目中的任何一个都可以是解析树。https://code.kx.com/q/basics/parsetrees/
Q2。在下面的代码中,value未能返回我认为是有效解析树的结果,但eval工作正常,递归评估树。这是否意味着最上面的描述是错误的?
q)value(+;3;(+;4;5))
'type
[0] value(+;3;(+;4;5))
^
q)eval(+;3;(+;4;5))
12
Run Code Online (Sandbox Code Playgroud)
Q3。那么一般来说,我们如何选择是使用value还是eval?
我正在尝试生成一个矩阵,这样:
我正在尝试修改单位矩阵的示例:
{x=/:x}@til 4
Run Code Online (Sandbox Code Playgroud)
挤进我的特殊功能:
shrinkfn: {$[x=y;1;0.5]}
Run Code Online (Sandbox Code Playgroud)
但我在挣扎。做到这一点的最佳方法是什么?