Kdb 使用embedpy将q表转换为数据帧
我正在寻找一种将q/kdb表保存到拼花地板文件中的方法。我找到的最直接的方法是使用将q表转换为pandas数据帧。有人做到了这一点吗 干杯Kdb 使用embedpy将q表转换为数据帧,kdb,Kdb,我正在寻找一种将q/kdb表保存到拼花地板文件中的方法。我找到的最直接的方法是使用将q表转换为pandas数据帧。有人做到了这一点吗 干杯 didier要将q表转换为数据帧,可以使用以下功能: tab2df:{ r:.p.import[`pandas;`:DataFrame;x][@;cols x]; $[count k:keys x;r[`:set_index]k;r]} df2tab:{n:$[.p.isinstance[x`:index;.p.import[`pandas]`:Range
didier要将q表转换为数据帧,可以使用以下功能:
tab2df:{
r:.p.import[`pandas;`:DataFrame;x][@;cols x];
$[count k:keys x;r[`:set_index]k;r]}
df2tab:{n:$[.p.isinstance[x`:index;.p.import[`pandas]`:RangeIndex]`;0;x[`:index.nlevels]`];n!flip $[n;x[`:reset_index][];x][`:to_dict;`list]`}
要将pandas数据帧转换为q表,可以使用以下功能:
tab2df:{
r:.p.import[`pandas;`:DataFrame;x][@;cols x];
$[count k:keys x;r[`:set_index]k;r]}
df2tab:{n:$[.p.isinstance[x`:index;.p.import[`pandas]`:RangeIndex]`;0;x[`:index.nlevels]`];n!flip $[n;x[`:reset_index][];x][`:to_dict;`list]`}
df2tab需要将数据帧转换为embedPy对象。您可以使用.p.wrap
请参见下面的示例
q)\l p.q
q)tab:([]a:10?10.;b:10?10;c:10?`aaa`bbb`ccc)
q)tab
a b c
---------------
1.086824 2 ccc
9.598964 7 aaa
0.3668341 8 aaa
6.430982 5 ccc
6.708738 6 aaa
6.789082 4 bbb
4.12317 1 aaa
9.877844 3 aaa
3.867353 3 aaa
7.26781 7 ccc
q)tab2df[tab]
{[f;x]embedPy[f;x]}[foreign]enlist
q)print tab2df[tab]
a b c
0 1.086824 2 ccc
1 9.598964 7 aaa
2 0.366834 8 aaa
3 6.430982 5 ccc
4 6.708738 6 aaa
5 6.789082 4 bbb
6 4.123170 1 aaa
7 9.877844 3 aaa
8 3.867353 3 aaa
9 7.267810 7 ccc
q)pdtab:tab2df[tab]
q)df2tab[pdtab]
a b c
-----------------
1.086824 2 "ccc"
9.598964 7 "aaa"
0.3668341 8 "aaa"
6.430982 5 "ccc"
6.708738 6 "aaa"
6.789082 4 "bbb"
4.12317 1 "aaa"
9.877844 3 "aaa"
3.867353 3 "aaa"
7.26781 7 "ccc"
希望这有帮助 要将q表转换为数据帧,可以使用以下功能:
tab2df:{
r:.p.import[`pandas;`:DataFrame;x][@;cols x];
$[count k:keys x;r[`:set_index]k;r]}
df2tab:{n:$[.p.isinstance[x`:index;.p.import[`pandas]`:RangeIndex]`;0;x[`:index.nlevels]`];n!flip $[n;x[`:reset_index][];x][`:to_dict;`list]`}
要将pandas数据帧转换为q表,可以使用以下功能:
tab2df:{
r:.p.import[`pandas;`:DataFrame;x][@;cols x];
$[count k:keys x;r[`:set_index]k;r]}
df2tab:{n:$[.p.isinstance[x`:index;.p.import[`pandas]`:RangeIndex]`;0;x[`:index.nlevels]`];n!flip $[n;x[`:reset_index][];x][`:to_dict;`list]`}
df2tab需要将数据帧转换为embedPy对象。您可以使用.p.wrap
请参见下面的示例
q)\l p.q
q)tab:([]a:10?10.;b:10?10;c:10?`aaa`bbb`ccc)
q)tab
a b c
---------------
1.086824 2 ccc
9.598964 7 aaa
0.3668341 8 aaa
6.430982 5 ccc
6.708738 6 aaa
6.789082 4 bbb
4.12317 1 aaa
9.877844 3 aaa
3.867353 3 aaa
7.26781 7 ccc
q)tab2df[tab]
{[f;x]embedPy[f;x]}[foreign]enlist
q)print tab2df[tab]
a b c
0 1.086824 2 ccc
1 9.598964 7 aaa
2 0.366834 8 aaa
3 6.430982 5 ccc
4 6.708738 6 aaa
5 6.789082 4 bbb
6 4.123170 1 aaa
7 9.877844 3 aaa
8 3.867353 3 aaa
9 7.267810 7 ccc
q)pdtab:tab2df[tab]
q)df2tab[pdtab]
a b c
-----------------
1.086824 2 "ccc"
9.598964 7 "aaa"
0.3668341 8 "aaa"
6.430982 5 "ccc"
6.708738 6 "aaa"
6.789082 4 "bbb"
4.12317 1 "aaa"
9.877844 3 "aaa"
3.867353 3 "aaa"
7.26781 7 "ccc"
希望这有帮助