PyKX to Pythonic data type mapping
A breakdown of each of the pykx.K
types and their analogous Python
, NumPy
, Pandas
, and PyArrow
types.
Cheat Sheet: Python
, NumPy
, PyArrow
PyKX type | Python type | Numpy dtype | PyArrow type |
---|---|---|---|
List | list | object | Not Supported |
Boolean | bool | bool | Not Supported |
GUID | uuid4 | uuid4 | uuid4 |
Byte | int | uint8 | uint8 |
Short | int | int16 | int16 |
Int | int | int32 | int32 |
Long | int | int64 | int64 |
Real | float | float32 | FloatArray |
Float | float | float64 | DoubleArray |
Char | bytes | \|S1 | BinaryArray |
Symbol | str | object | StringArray |
Timestamp | datetime | datetime64[ns] | TimestampArray |
Month | date | datetime64[M] | Not Supported |
Date | date | datetime64[D] | Date32Array |
Timespan | timedelta | timedelta64[ns] | DurationArray |
Minute | timedelta | timedelta64[m] | Not Supported |
Second | timedelta | timedelta64[s] | DurationArray |
Time | timedelta | timedelta64[ms] | DurationArray |
Dictionary | dict | Not Supported | Not Supported |
Table | dict | records | Table |
Cheat Sheet: Pandas 1.*
, Pandas 2.*
, Pandas 2.* PyArrow backed
Note: Creating PyArrow backed Pandas objects uses as_arrow=True
using NumPy arrays as an intermediate data format.
PyKX type | Pandas 1.* dtype | Pandas 2.* dtype | Pandas 2.* as_arrow=True dtype |
---|---|---|---|
List | object | object | object |
Boolean | bool | bool | bool[pyarrow] |
GUID | object | object | object |
Byte | uint8 | uint8 | uint8[pyarrow] |
Short | int16 | int16 | int16[pyarrow] |
Int | int32 | int32 | int32[pyarrow] |
Long | int64 | int64 | int64[pyarrow] |
Real | float32 | float32 | float[pyarrow] |
Float | float64 | float64 | double[pyarrow] |
Char | bytes8 | bytes8 | fixed_size_binary[1][pyarrow] |
Symbol | object | object | string[pyarrow] |
Timestamp | datetime64[ns] | datetime64[ns] | timestamp[ns][pyarrow] |
Month | datetime64[ns] | datetime64[s] | timestamp[s][pyarrow] |
Date | datetime64[ns] | datetime64[s] | timestamp[s][pyarrow] |
Timespan | timedelta64[ns] | timedelta64[ns] | duration[ns][pyarrow] |
Minute | timedelta64[ns] | timedelta64[s] | duration[s][pyarrow] |
Second | timedelta64[ns] | timedelta64[s] | duration[s][pyarrow] |
Time | timedelta64[ns] | timedelta64[ms] | duration[ms][pyarrow] |
Dictionary | Not Supported | Not Supported | Not Supported |
Table | DataFrame | DataFrame | DataFrame |
pykx.List
A python list of mixed types will be converted into a pykx.List
.
>>> pykx.List([1, b'foo', 'bar', 4.5])
pykx.List(pykx.q('
1
"foo"
`bar
4.5
'))
Calling .py()
on a pykx.List
will return a generic python list object where each object is converted into its analogous python type.
>>> pykx.List([1, b'foo', 'bar', 4.5]).py()
[1, b'foo', 'bar', 4.5]
A numpy list with dtype==object
containing data of mixed types will be converted into a pykx.List
>>> pykx.List(np.array([1, b'foo', 'bar', 4.5], dtype=object))
pykx.List(pykx.q('
1
"foo"
`bar
4.5
'))
Calling .np()
on a pykx.List
object will return a numpy ndarray
with dtype==object
where each element has been converted into its closest analogous python type.
>>> pykx.List([1, b'foo', 'bar', 4.5]).np()
array([1, b'foo', 'bar', 4.5], dtype=object)
Calling .pd()
on a pykx.List
object will return a pandas Series
with dtype==object
where each element has been converted into its closest analogous python type.
>>> pykx.List([1, b'foo', 'bar', 4.5]).pd()
0 1
1 b'foo'
2 bar
3 4.5
dtype: object
pykx.BooleanAtom
Python
The python bool type will be converted into a pykx.BooleanAtom
.
>>> pykx.BooleanAtom(True)
pykx.BooleanAtom(pykx.q('1b'))
Calling .py()
on a pykx.BooleanAtom
will return a python bool object.
>>> pykx.BooleanAtom(True).py()
True
pykx.BooleanVector
A list of python bool types will be converted into a pykx.BooleanVector
.
>>> pykx.BooleanVector([True, False, True])
pykx.BooleanVector(pykx.q('101b'))
Calling .py()
on a pykx.BooleanVector
will return a list of python bool objects.
>>> pykx.BooleanVector([True, False, True]).py()
[True, False, True]
Converting a pykx.BoolVector
will result in an array of objects with the bool
dtype
, arrays of that dtype
can also be converted into pykx.BoolVector
objects.
pykx.GUIDAtom
The python uuid4 type from the uuid
library will be converted into a pykx.GUIDAtom
.
>>> from uuid import uuid4
>>> pykx.GUIDAtom(uuid4())
pykx.GUIDAtom(pykx.q('012e8fb7-52c4-49e6-9b4e-93aa625ca3d7'))
Calling .py()
on a pykx.GUIDAtom
will return a python uuid4 object.
>>> pykx.GUIDAtom(uuid4()).py()
UUID('d16f9f3f-2a57-4dfd-818e-04c9c7a53584')
pykx.GUIDVector
A list of python uuid4 types from the uuid
library will be converted into a pykx.GUIDVector
.
>>> pykx.GUIDVector([uuid4(), uuid4()])
pykx.GUIDVector(pykx.q('542ccbef-8aa1-4433-804a-7928172ec2d4 ff6f89fb-1aec-4073-821a-ce281ca6263e'))
Calling .py()
on a pykx.GUIDVector
will return a list of python uuid4 objects.
>>> pykx.GUIDVector([uuid4(), uuid4()]).py()
[UUID('a3b284fc-5f31-4ba2-b521-fa8b5c309e02'), UUID('95ee9044-3930-492c-96f2-e336110de023')]
Each of these will return an array of their respective object types around a list of uuid4 objects.
pykx.ByteAtom
The python int type will be converted into a pykx.ByteAtom
.
Float types will also be converted but the decimal will be truncated away and no rounding done.
>>> pykx.ByteAtom(1.0)
pykx.ByteAtom(pykx.q('0x01'))
>>> pykx.ByteAtom(1.5)
pykx.ByteAtom(pykx.q('0x01'))
Calling .py()
on a pykx.ByteAtom
will return a python int object.
>>> pykx.ByteAtom(1.5).py()
1
pykx.ByteVector
A list of python int types will be converted into a pykx.ByteVector
.
Float types will also be converted but the decimal will be truncated away and no rounding done.
>>> pykx.ByteVector([1, 2.5])
pykx.ByteVector(pykx.q('0x0102'))
Calling .py()
on a pykx.ByteVector
will return a list of python int objects.
>>> pykx.ByteVector([1, 2.5]).py()
[1, 2]
Converting a pykx.ByteVector
will result in an array of objects with the uint8
dtype
, arrays of that dtype
can also be converted into pykx.ByteVector
objects.
pykx.ShortAtom
The python int type will be converted into a pykx.ShortAtom
.
Float types will also be converted but the decimal will be truncated away and no rounding done.
>>> pykx.ShortAtom(1)
pykx.ShortAtom(pykx.q('1h'))
>>> pykx.ShortAtom(1.5)
pykx.ShortAtom(pykx.q('1h'))
Calling .py()
on a pykx.ShortAtom
will return a python int object.
>>> pykx.ShortAtom(1.5).py()
1
pykx.ShortVector
A list of python int types will be converted into a pykx.ShortVector
.
Float types will also be converted but the decimal will be truncated away and no rounding done.
>>> pykx.ShortVector([1, 2.5])
pykx.ShortVector(pykx.q('1 2h'))
Calling .py()
on a pykx.ShortVector
will return a list of python int objects.
>>> pykx.ShortVector([1, 2.5]).py()
[1, 2]
Converting a pykx.ShortVector
will result in an array of objects with the int16
dtype
, arrays of that dtype
can also be converted into pykx.ShortVector
objects.
pykx.IntAtom
The python int type will be converted into a pykx.IntAtom
.
Float types will also be converted but the decimal will be truncated away and no rounding done.
>>> pykx.IntAtom(1)
pykx.IntAtom(pykx.q('1i'))
>>> pykx.IntAtom(1.5)
pykx.IntAtom(pykx.q('1i'))
Calling .py()
on a pykx.IntAtom
will return a python int object.
>>> pykx.IntAtom(1.5).py()
1
pykx.IntVector
A list of python int types will be converted into a pykx.IntVector
.
Float types will also be converted but the decimal will be truncated away and no rounding done.
>>> pykx.IntVector([1, 2.5])
pykx.IntVector(pykx.q('1 2i'))
Calling .py()
on a pykx.IntVector
will return a list of python int objects.
>>> pykx.IntVector([1, 2.5]).py()
[1, 2]
Converting a pykx.IntVector
will result in an array of objects with the int32
dtype
, arrays of that dtype
can also be converted into pykx.IntVector
objects.
pykx.LongAtom
The python int type will be converted into a pykx.LongAtom
.
Float types will also be converted but the decimal will be truncated away and no rounding done.
>>> pykx.LongAtom(1)
pykx.LongAtom(pykx.q('1'))
>>> pykx.LongAtom(1.5)
pykx.LongAtom(pykx.q('1'))
Calling .py()
on a pykx.LongAtom
will return a python int object.
>>> pykx.LongAtom(1.5).py()
1
pykx.LongVector
A list of python int types will be converted into a pykx.LongVector
.
Float types will also be converted but the decimal will be truncated away and no rounding done.
>>> pykx.LongVector([1, 2.5])
pykx.LongVector(pykx.q('1 2'))
Calling .py()
on a pykx.LongVector
will return a list of python int objects.
>>> pykx.LongVector([1, 2.5]).py()
[1, 2]
Converting a pykx.LongVector
will result in an array of objects with the int64
dtype
, arrays of that dtype
can also be converted into pykx.LongVector
objects.
pykx.RealAtom
The python float and int types will be converted into a pykx.RealAtom
.
>>> pykx.RealAtom(2.5)
pykx.RealAtom(pykx.q('2.5e'))
Calling .py()
on a pykx.RealAtom
will return a python float object.
>>> pykx.RealAtom(2.5).py()
2.5
pykx.RealVector
A list of python int and float types will be converted into a pykx.RealVector
.
>>> pykx.RealVector([1, 2.5])
pykx.RealVector(pykx.q('1 2.5e'))
Calling .py()
on a pykx.RealVector
will return a list of python float objects.
>>> pykx.RealVector([1, 2.5]).py()
[1.0, 2.5]
Converting a pykx.RealVector
will result in an array of objects with the float32
dtype
, arrays of that dtype
can also be converted into pykx.RealVector
objects.
This will return a PyArrow
array with the FloatArray type.
pykx.FloatAtom
The python float and int types will be converted into a pykx.FloatAtom
.
>>> pykx.FloatAtom(2.5)
pykx.FloatAtom(pykx.q('2.5'))
Calling .py()
on a pykx.FloatAtom
will return a python float object.
>>> pykx.FloatAtom(2.5).py()
2.5
pykx.FloatVector
A list of python int and float types will be converted into a pykx.FloatVector
.
>>> pykx.FloatVector([1, 2.5])
pykx.FloatVector(pykx.q('1 2.5'))
Calling .py()
on a pykx.FloatVector
will return a list of python float objects.
>>> pykx.FloatVector([1, 2.5]).py()
[1.0, 2.5]
Converting a pykx.FloatVector
will result in an array of objects with the float64
dtype
, arrays of that dtype
can also be converted into pykx.FloatVector
objects.
This will return a PyArrow
array with the DoubleArray type.
pykx.CharAtom
The python bytes type with length 1 will be converted into a pykx.CharAtom
.
>>> pykx.CharAtom(b'a')
pykx.CharAtom(pykx.q('"a"'))
Calling .py()
on a pykx.CharAtom
will return a python bytes object.
>>> pykx.CharAtom(b'a').py()
b'a'
pykx.CharVector
The python bytes type with length greater than 1 will be converted into a pykx.CharVector
.
>>> pykx.CharVector(b'abc')
pykx.CharVector(pykx.q('"abc"'))
Calling .py()
on a pykx.CharVector
will return a python bytes object.
>>> pykx.CharVector(b'abc').py()
b'abc'
Calling .np()
on a pykx.CharVector
will return a numpy ndarray
with dtype
'|S1'
.
>>> pykx.CharVector(b'abc').np()
array([b'a', b'b', b'c'], dtype='|S1')
Converting a ndarray
of this dtype
will create a pykx.CharVector
.
>>> pykx.CharVector(np.array([b'a', b'b', b'c'], dtype='|S1'))
pykx.CharVector(pykx.q('"abc"'))
Calling .pd()
on a pykx.CharVector
will return a pandas Series
with dtype
bytes8
.
>>> pykx.CharVector(b'abc').pd()
0 b'a'
1 b'b'
2 b'c'
dtype: bytes8
Converting a Series
of this dtype
will create a pykx.CharVector
.
>>> pykx.CharVector(pd.Series([b'a', b'b', b'c'], dtype=bytes))
pykx.CharVector(pykx.q('"abc"'))
Calling .pa()
on a pykx.CharVector
will return a pyarrow BinaryArray
.
<pyarrow.lib.BinaryArray object at 0x7f44cc099c00>
[
61,
62,
63
]
pykx.SymbolAtom
The python string type will be converted into a pykx.SymbolAtom
.
>>> pykx.toq('symbol')
pykx.SymbolAtom(pykx.q('`symbol'))
Calling .py()
on a pykx.SymbolAtom
will return a python string object.
>>> pykx.toq('symbol').py()
'symbol'
pykx.SymbolVector
A list of python string types will be converted into a pykx.SymbolVector
.
>>> pykx.SymbolVector(['a', 'b', 'c'])
pykx.SymbolVector(pykx.q('`a`b`c'))
Calling .py()
on a pykx.SymbolVector
will return a list of python string objects.
>>> pykx.SymbolVector(['a', 'b', 'c']).py()
['a', 'b', 'c']
Calling .np()
on a pykx.SymbolVector
will return a numpy ndarray
of python strings with dtype
object
.
>>> pykx.SymbolVector(['a', 'b', 'c']).np()
array(['a', 'b', 'c'], dtype=object)
Converting a ndarray
of dtype
object
will create a pykx.SymbolVector
.
>>> pykx.SymbolVector(np.array(['a', 'b', 'c'], dtype=object))
pykx.SymbolVector(pykx.q('`a`b`c'))
Calling .pd()
on a pykx.SymbolVector
will return a pandas Series
with dtype
object
.
>>> pykx.SymbolVector(['a', 'b', 'c']).pd()
0 a
1 b
2 c
dtype: object
Calling .pa()
on a pykx.SymbolVector
will return a pyarrow StringArray
.
>>> pykx.SymbolVector(['a', 'b', 'c']).pa()
<pyarrow.lib.StringArray object at 0x7f44cc323fa0>
[
"a",
"b",
"c"
]
pykx.TimestampAtom
The python datetime type will be converted into a pykx.TimestampAtom
.
>>> kx.TimestampAtom(datetime(2150, 10, 22, 20, 31, 15, 70713))
pykx.TimestampAtom(pykx.q('2150.10.22D20:31:15.070713000'))
Calling .py()
on a pykx.TimestampAtom
will return a python datetime object.
>>> kx.TimestampAtom(datetime(2150, 10, 22, 20, 31, 15, 70713)).py()
datetime.datetime(2150, 10, 22, 20, 31, 15, 70713)
pykx.TimestampVector
A list of python datetime
types will be converted into a pykx.TimestampVector
.
>>> kx.TimestampVector([datetime(2150, 10, 22, 20, 31, 15, 70713), datetime(2050, 10, 22, 20, 31, 15, 70713)])
pykx.TimestampVector(pykx.q('2150.10.22D20:31:15.070713000 2050.10.22D20:31:15.070713000'))
Calling .py()
on a pykx.TimestampVector
will return a list of python datetime
objects.
>>> kx.TimestampVector([datetime(2150, 10, 22, 20, 31, 15, 70713), datetime(2050, 10, 22, 20, 31, 15, 70713)]).py()
[datetime.datetime(2150, 10, 22, 20, 31, 15, 70713), datetime.datetime(2050, 10, 22, 20, 31, 15, 70713)]
Calling .np()
on a pykx.TimestampVector
will return a numpy ndarray
with dtype
datetime64[ns]
.
>>> kx.TimestampVector([datetime(2150, 10, 22, 20, 31, 15, 70713), datetime(2050, 10, 22, 20, 31, 15, 70713)]).np()
array(['2150-10-22T20:31:15.070713000', '2050-10-22T20:31:15.070713000'],
dtype='datetime64[ns]')
Converting a ndarray
of dtype
datetime64[ns]
will create a pykx.TimestampVector
.
>>> kx.TimestampVector(np.array(['2150-10-22T20:31:15.070713000', '2050-10-22T20:31:15.070713000'], dtype='datetime64[ns]'))
pykx.TimestampVector(pykx.q('2150.10.22D20:31:15.070713000 2050.10.22D20:31:15.070713000'))
Calling .pd()
on a pykx.TimestampVector
will return a pandas Series
with dtype
:
-
datetime64[ns]
:>>> kx.TimestampVector([datetime(2150, 10, 22, 20, 31, 15, 70713), datetime(2050, 10, 22, 20, 31, 15, 70713)]).pd() 0 2150-10-22 20:31:15.070713 1 2050-10-22 20:31:15.070713 dtype: datetime64[ns]
-
timestamp[ns][pyarrow]
in pandas>=2.0 withas_arrow=True
:>>> kx.TimestampVector([datetime(2150, 10, 22, 20, 31, 15, 70713), datetime(2050, 10, 22, 20, 31, 15, 70713)]).pd(as_arrow=True) 0 2150-10-22 20:31:15.070713 1 2050-10-22 20:31:15.070713 dtype: timestamp[ns][pyarrow]
Calling .pa()
on a pykx.TimestampVector
will return a pyarrow TimestampArray
.
>>> kx.TimestampVector([datetime(2150, 10, 22, 20, 31, 15, 70713), datetime(2050, 10, 22, 20, 31, 15, 70713)]).pa()
<pyarrow.lib.TimestampArray object at 0x7f6428f0dde0>
[
2150-10-22 20:31:15.070713000,
2050-10-22 20:31:15.070713000
]
pykx.MonthAtom
The python date type will be converted into a pykx.MonthAtom
.
>>> from datetime import date
>>> kx.MonthAtom(date(1972, 5, 1))
pykx.MonthAtom(pykx.q('1972.05m'))
Calling .py()
on a pykx.MonthAtom
will return a python date object.
>>> kx.MonthAtom(date(1972, 5, 1)).py()
datetime.date(1972, 5, 1)
pykx.MonthVector
A list of python date
types will be converted into a pykx.MonthVector
.
>>> kx.MonthVector([date(1972, 5, 1), date(1999, 5, 1)])
pykx.MonthVector(pykx.q('1972.05 1999.05m'))
Calling .py()
on a pykx.MonthVector
will return a list of python date
objects.
>>> kx.MonthVector([date(1972, 5, 1), date(1999, 5, 1)]).py()
[datetime.date(1972, 5, 1), datetime.date(1999, 5, 1)]
Calling .np()
on a pykx.MonthVector
will return a numpy ndarray
with dtype
datetime64[M]
.
>>> kx.MonthVector([date(1972, 5, 1), date(1999, 5, 1)]).np()
array(['1972-05', '1999-05'], dtype='datetime64[M]')
Converting a ndarray
of dtype
datetime64[M]
will create a pykx.MonthVector
.
>>> kx.MonthVector(np.array(['1972-05', '1999-05'], dtype='datetime64[M]'))
pykx.MonthVector(pykx.q('1972.05 1999.05m'))
Calling .pd()
on a pykx.MonthVector
will return a pandas Series
with dtype
:
-
datetime64[ns]
inpandas<2.0
:>>> kx.MonthVector([date(1972, 5, 1), date(1999, 5, 1)]).pd() 0 1972-05-01 1 1999-05-01 dtype: datetime64[ns]
-
datetime64[s]
inpandas>=2.0
:>>> kx.MonthVector([date(1972, 5, 1), date(1999, 5, 1)]).pd() 0 1972-05-01 1 1999-05-01 dtype: datetime64[s]
-
timestamp[s][pyarrow]
inpandas>=2.0
withas_arrow=True
:>>> kx.MonthVector([date(1972, 5, 1), date(1999, 5, 1)]).pd(as_arrow=True) 0 1972-05-01 00:00:00 1 1999-05-01 00:00:00 dtype: timestamp[s][pyarrow]
pykx.DateAtom
The python date type will be converted into a pykx.DateAtom
.
>>> kx.DateAtom(date(1972, 5, 31))
pykx.DateAtom(pykx.q('1972.05.31'))
Calling .py()
on a pykx.DateAtom
will return a python date object.
>>> kx.DateAtom(date(1972, 5, 31)).py()
datetime.date(1972, 5, 31)
pykx.DateVector
A list of python date
types will be converted into a pykx.DateVector
.
>>> kx.DateVector([date(1972, 5, 1), date(1999, 5, 1)])
pykx.DateVector(pykx.q('1972.05.01 1999.05.01'))
Calling .py()
on a pykx.DateVector
will return a list of python date
objects.
>>> kx.DateVector([date(1972, 5, 1), date(1999, 5, 1)]).py()
[datetime.date(1972, 5, 1), datetime.date(1999, 5, 1)]
Calling .np()
on a pykx.DateVector
will return a numpy ndarray
of python strings with dtype
datetime64[D]
.
>>> kx.DateVector([date(1972, 5, 1), date(1999, 5, 1)]).np()
array(['1972-05-01', '1999-05-01'], dtype='datetime64[D]')
Converting a ndarray
of dtype
datetime64[D]
will create a pykx.DateVector
.
>>> kx.DateVector(np.array(['1972-05-01', '1999-05-01'], dtype='datetime64[D]'))
pykx.DateVector(pykx.q('1972.05.01 1999.05.01'))
Calling .pd()
on a pykx.DateVector
will return a pandas Series
with dtype
:
-
datetime64[ns]
inpandas<2.0
:# pandas<2.0 >>> kx.DateVector([date(1972, 5, 1), date(1999, 5, 1)]).pd() 0 1972-05-01 1 1999-05-01 dtype: datetime64[ns]
-
datetime64[s]
inpandas>=2.0
:>>> kx.DateVector([date(1972, 5, 1), date(1999, 5, 1)]).pd() 0 1972-05-01 1 1999-05-01 dtype: datetime64[s]
-
timestamp[s][pyarrow]
inpandas>=2.0
withas_arrow=True
:>>> kx.DateVector([date(1972, 5, 1), date(1999, 5, 1)]).pd(as_arrow=True) 0 1972-05-01 00:00:00 1 1999-05-01 00:00:00 dtype: timestamp[s][pyarrow]
Calling .pa()
on a pykx.DateVector
will return a pyarrow Date32Array
.
>>> kx.DateVector([date(1972, 5, 1), date(1999, 5, 1)]).pa()
<pyarrow.lib.Date32Array object at 0x7f6428f0de40>
[
1972-05-01,
1999-05-01
]
pykx.Datetime
types
These types are deprecated and can only be accessed using the raw
key word argument.
Converting these types to python will return a float object or a float64
object in numpy's case.
>>> kx.q('0001.02.03T04:05:06.007 0001.02.03T04:05:06.007').py(raw=True)
[-730085.8297915857, -730085.8297915857]
>>> kx.q('0001.02.03T04:05:06.007 0001.02.03T04:05:06.007').np(raw=True)
array([-730085.82979159, -730085.82979159])
>>> kx.q('0001.02.03T04:05:06.007 0001.02.03T04:05:06.007').np(raw=True).dtype
dtype('float64')
pykx.TimespanAtom
The python timedelta
type will be converted into a pykx.TimespanAtom
.
>>> from datetime import timedelta
>>> kx.TimespanAtom(timedelta(days=43938, seconds=68851, microseconds=664551))
pykx.TimespanAtom(pykx.q('43938D19:07:31.664551000'))
Calling .py()
on a pykx.TimespanAtom
will return a python timedelta
object.
>>> kx.TimespanAtom(timedelta(days=43938, seconds=68851, microseconds=664551)).py()
datetime.timedelta(days=43938, seconds=68851, microseconds=664551)
pykx.TimespanVector
A list of python timedelta
types will be converted into a pykx.TimespanVector
.
>>> kx.TimespanVector([timedelta(days=43938, seconds=68851, microseconds=664551), timedelta(days=43938, seconds=68851, microseconds=664551)])
pykx.TimespanVector(pykx.q('43938D19:07:31.664551000 43938D19:07:31.664551000'))
Calling .py()
on a pykx.TimespanVector
will return a list of python timedelta
objects.
>>> kx.TimespanVector([timedelta(days=43938, seconds=68851, microseconds=664551), timedelta(days=43938, seconds=68851, microseconds=664551)]).py()
[datetime.timedelta(days=43938, seconds=68851, microseconds=664551), datetime.timedelta(days=43938, seconds=68851, microseconds=664551)]
Calling .np()
on a pykx.TimespanVector
will return a numpy ndarray
of python strings with dtype
timedelta64[ns]
.
>>> kx.TimespanVector([timedelta(days=43938, seconds=68851, microseconds=664551), timedelta(days=43938, seconds=68851, microseconds=664551)]).np()
array([3796312051664551000, 3796312051664551000], dtype='timedelta64[ns]')
Converting a ndarray
of dtype
datetime64[ns]
will create a pykx.TimespanVector
.
>>> kx.TimespanVector(np.array([3796312051664551000, 3796312051664551000], dtype='timedelta64[ns]'))
pykx.TimespanVector(pykx.q('43938D19:07:31.664551000 43938D19:07:31.664551000'))
Calling .pd()
on a pykx.TimespanVector
will return a pandas Series
with dtype
:
-
timedelta64[ns]
:>>> kx.TimespanVector([timedelta(days=43938, seconds=68851, microseconds=664551), timedelta(days=43938, seconds=68851, microseconds=664551)]).pd() 0 43938 days 19:07:31.664551 1 43938 days 19:07:31.664551 dtype: timedelta64[ns]
-
duration[ns][pyarrow]
inpandas>=2.0
withas_arrow=True
:>>> kx.TimespanVector([timedelta(days=43938, seconds=68851, microseconds=664551), timedelta(days=43938, seconds=68851, microseconds=664551)]).pd(as_arrow=True) 0 43938 days 19:07:31.664551 1 43938 days 19:07:31.664551 dtype: duration[ns][pyarrow]
Calling .pa()
on a pykx.TimespanVector
will return a pyarrow DurationArray
.
>>> kx.TimespanVector([timedelta(days=43938, seconds=68851, microseconds=664551), timedelta(days=43938, seconds=68851, microseconds=664551)]).pa()
<pyarrow.lib.DurationArray object at 0x7f6428f0dea0>
[
3796312051664551000,
3796312051664551000
]
pykx.MinuteAtom
The python timedelta
type will be converted into a pykx.MinuteAtom
.
>>> kx.MinuteAtom(timedelta(minutes=216))
pykx.MinuteAtom(pykx.q('03:36'))
Calling .py()
on a pykx.MinuteAtom
will return a python timedelta
object.
>>> kx.MinuteAtom(timedelta(minutes=216)).py()
datetime.timedelta(seconds=12960)
pykx.MinuteVector
A list of python timedelta
types will be converted into a pykx.MinuteVector
.
>>> kx.MinuteVector([timedelta(minutes=216), timedelta(minutes=67)])
pykx.MinuteVector(pykx.q('03:36 01:07'))
Calling .py()
on a pykx.MinuteVector
will return a list of python timedelta
objects.
>>> kx.MinuteVector([timedelta(minutes=216), timedelta(minutes=67)]).py()
[datetime.timedelta(seconds=12960), datetime.timedelta(seconds=4020)]
Calling .np()
on a pykx.MinuteVector
will return a numpy ndarray
of python strings with dtype
timedelta64[m]
.
>>> kx.MinuteVector([timedelta(minutes=216), timedelta(minutes=67)]).np()
array([216, 67], dtype='timedelta64[m]')
Converting a ndarray
of dtype
timedelta64[m]
will create a pykx.MinuteVector
.
>>> kx.MinuteVector(np.array([216, 67], dtype='timedelta64[m]'))
pykx.MinuteVector(pykx.q('03:36 01:07'))
Calling .pd()
on a pykx.MinuteVector
will return a pandas Series
with dtype
:
-
timedelta64[ns]
inpandas<2.0
:>>> kx.MinuteVector([timedelta(minutes=216), timedelta(minutes=67)]).pd() 0 0 days 03:36:00 1 0 days 01:07:00 dtype: timedelta64[ns]
-
timedelta64[s]
inpandas>=2.0
:>>> kx.MinuteVector([timedelta(minutes=216), timedelta(minutes=67)]).pd() 0 0 days 03:36:00 1 0 days 01:07:00 dtype: timedelta64[s]
-
duration[s][pyarrow]
inpandas>=2.0
withas_arrow=True
:>>> kx.MinuteVector([timedelta(minutes=216), timedelta(minutes=67)]).pd(as_arrow=True) 0 0 days 03:36:00 1 0 days 01:07:00 dtype: duration[s][pyarrow]
pykx.SecondAtom
The python timedelta
type will be converted into a pykx.SecondAtom
.
>>> kx.SecondAtom(timedelta(seconds=13019))
pykx.SecondAtom(pykx.q('03:36:59'))
Calling .py()
on a pykx.SecondAtom
will return a python timedelta
object.
>>> kx.SecondAtom(timedelta(seconds=13019)).py()
datetime.timedelta(seconds=13019)
pykx.SecondVector
A list of python timedelta
types will be converted into a pykx.SecondVector
.
>>> kx.SecondVector([timedelta(seconds=13019), timedelta(seconds=1019)])
pykx.SecondVector(pykx.q('03:36:59 00:16:59'))
Calling .py()
on a pykx.SecondVector
will return a list of python timedelta
objects.
>>> kx.SecondVector([timedelta(seconds=13019), timedelta(seconds=1019)]).py()
[datetime.timedelta(seconds=13019), datetime.timedelta(seconds=1019)]
Calling .np()
on a pykx.SecondVector
will return a numpy ndarray
of python strings with dtype
timedelta64[s]
.
>>> kx.SecondVector([timedelta(seconds=13019), timedelta(seconds=1019)]).np()
array([13019, 1019], dtype='timedelta64[s]')
Converting a ndarray
of dtype
timedelta64[s]
will create a pykx.SecondVector
.
>>> kx.SecondVector(np.array([13019, 1019], dtype='timedelta64[s]'))
pykx.SecondVector(pykx.q('03:36:59 00:16:59'))
Calling .pd()
on a pykx.SecondVector
will return a pandas Series
with dtype
:
-
timedelta64[ns]
inpandas<2.0
:# pandas<2.0 >>> kx.SecondVector([timedelta(seconds=13019), timedelta(seconds=1019)]).pd() 0 0 days 03:36:59 1 0 days 00:16:59 dtype: timedelta64[ns]
-
timedelta64[s]
inpandas>=2.0
:>>> kx.SecondVector([timedelta(seconds=13019), timedelta(seconds=1019)]).pd() 0 0 days 03:36:59 1 0 days 00:16:59 dtype: timedelta64[s]
-
duration[s][pyarrow]
inpandas>=2.0
withas_arrow=True
:>>> kx.SecondVector([timedelta(seconds=13019), timedelta(seconds=1019)]).pd(as_arrow=True) 0 0 days 03:36:59 1 0 days 00:16:59 dtype: duration[s][pyarrow]
Calling .pa()
on a pykx.SecondVector
will return a pyarrow DurationArray
.
>>> kx.SecondVector([timedelta(seconds=13019), timedelta(seconds=1019)]).pa()
<pyarrow.lib.DurationArray object at 0x7f6428f0e020>
[
13019,
1019
]
pykx.TimeAtom
The python timedelta
type will be converted into a pykx.TimeAtom
.
>>> kx.TimeAtom(timedelta(seconds=59789, microseconds=214000))
pykx.TimeAtom(pykx.q('16:36:29.214'))
Calling .py()
on a pykx.TimeAtom
will return a python timedelta
object.
>>> kx.TimeAtom(timedelta(seconds=59789, microseconds=214000)).py()
datetime.timedelta(seconds=59789, microseconds=214000)
pykx.TimeVector
A list of python timedelta
types will be converted into a pykx.TimeVector
.
>>> kx.TimeVector([timedelta(seconds=59789, microseconds=214000), timedelta(seconds=23789, microseconds=214000)])
pykx.TimeVector(pykx.q('16:36:29.214 06:36:29.214'))
Calling .py()
on a pykx.TimeVector
will return a list of python timedelta
objects.
>>> kx.TimeVector([timedelta(seconds=59789, microseconds=214000), timedelta(seconds=23789, microseconds=214000)]).py()
[datetime.timedelta(seconds=59789, microseconds=214000), datetime.timedelta(seconds=23789, microseconds=214000)]
Calling .np()
on a pykx.TimeVector
will return a numpy ndarray
of python strings with dtype
timedelta64[ms]
.
>>> kx.TimeVector([timedelta(seconds=59789, microseconds=214000), timedelta(seconds=23789, microseconds=214000)]).np()
array([59789214, 23789214], dtype='timedelta64[ms]')
Converting a ndarray
of dtype
timedelta64[ms]
will create a pykx.TimeVector
.
>>> kx.TimeVector(np.array([59789214, 23789214], dtype='timedelta64[ms]'))
pykx.TimeVector(pykx.q('16:36:29.214 06:36:29.214'))
Calling .pd()
on a pykx.TimeVector
will return a pandas Series
with dtype
:
-
timedelta64[ns]
inpandas<2.0
:>>> kx.TimeVector([timedelta(seconds=59789, microseconds=214000), timedelta(seconds=23789, microseconds=214000)]).pd() 0 0 days 16:36:29.214000 1 0 days 06:36:29.214000 dtype: timedelta64[ns]
-
timedelta[ms]
inpandas>=2.0
:>>> kx.TimeVector([timedelta(seconds=59789, microseconds=214000), timedelta(seconds=23789, microseconds=214000)]).pd() 0 0 days 16:36:29.214000 1 0 days 06:36:29.214000 dtype: timedelta64[ms]
-
duration[ms][pyarrow]
inpandas>=2.0
withas_arrow=True
:>>> kx.TimeVector([timedelta(seconds=59789, microseconds=214000), timedelta(seconds=23789, microseconds=214000)]).pd(as_arrow=True) 0 0 days 16:36:29.214000 1 0 days 06:36:29.214000 dtype: duration[ms][pyarrow]
Calling .pa()
on a pykx.TimeVector
will return a pyarrow DurationArray
.
>>> kx.TimeVector([timedelta(seconds=59789, microseconds=214000), timedelta(seconds=23789, microseconds=214000)]).pa()
<pyarrow.lib.DurationArray object at 0x7f643021ff40>
[
59789214,
23789214
]
pykx.Dictionary
A python dict
type will be converted into a pykx.Dictionary
.
>>> kx.Dictionary({'foo': b'bar', 'baz': 3.5, 'z': 'prime'})
pykx.Dictionary(pykx.q('
foo| "bar"
baz| 3.5
z | `prime
'))
Calling .py()
on a pykx.Dictionary
will return a python dict
object.
>>> kx.Dictionary({'foo': b'bar', 'baz': 3.5, 'z': 'prime'}).py()
{'foo': b'bar', 'baz': 3.5, 'z': 'prime'}
pykx.Table
Calling .py()
on a pykx.Table
will return a python dict
object.
>>> kx.Table(data={
... 'a': kx.random.random(10, 10),
... 'b': kx.random.random(10, 10)}).py()
{'a': [5, 6, 4, 1, 3, 3, 7, 8, 2, 1], 'b': [8, 1, 7, 2, 4, 5, 4, 2, 7, 8]}
Calling .np()
on a pykx.Table
will return a numpy record
array of the rows of the table with each type converted to it closest analogous numpy type.
>>> kx.Table(data={
... 'a': kx.random.random(10, 10),
... 'b': kx.random.random(10, 10)}).np()
rec.array([(9, 9), (9, 7), (2, 6), (5, 6), (4, 4), (2, 7), (5, 8), (8, 4),
(7, 4), (9, 6)],
dtype=[('a', '<i8'), ('b', '<i8')])
Calling .pd()
on a pykx.Table
will return a pandas DataFrame
with each column being converted to its closest pandas dtype
.
>>> kx.Table(data={
... 'a': kx.random.random(10, 10),
... 'b': kx.random.random(10, 10)}).pd()
a b
0 1 9
1 0 7
2 5 7
3 1 1
4 0 9
5 0 1
6 1 0
7 7 8
8 6 8
9 3 3
Converting a pandas
DataFrame
object will result in a pykx.Table
object.
>>> kx.Table(pd.DataFrame({'a': [x for x in range(10)], 'b': [float(x) for x in range(10)]}))
pykx.Table(pykx.q('
a b
---
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
'))
Calling .pa()
on a pykx.Table
will return a pyarrow Table
.
>>> kx.Table(data={
... 'a': kx.random.random(10, 10),
... 'b': kx.random.random(10, 10)}).pa()
pyarrow.Table
a: int64
b: int64
----
a: [[0,7,3,3,6,8,2,3,8,9]]
b: [[5,7,5,6,7,0,2,1,8,1]]
Converting a pyarow
Table
object will result in a pykx.Table
object.
>>> kx.Table(pa.Table.from_arrays([[1, 2, 3, 4], [5, 6, 7, 8]], names=['a', 'b']))
pykx.Table(pykx.q('
a b
---
1 5
2 6
3 7
4 8
'))