示例#1
0
def test_ymdt_named():
    DT = dt.Frame(Y=[2021, 1965, 2003, 1901, 1999],
                  M=[10, 7, 4, 11, 8],
                  D=[19, 18, 29, 10, 21],
                  h=[7, 21, 22, 23, 19],
                  m=[37, 29, 0, 44, 0],
                  s=[19, 23, 0, 46, 27],
                  ns=[0, 0, 0, 123456000, 1000])
    RES = DT[:,
             ymdt(year=f.Y,
                  month=f.M,
                  day=f.D,
                  hour=f.h,
                  minute=f.m,
                  second=f.s,
                  nanosecond=f.ns)]
    assert_equals(
        RES,
        dt.Frame([
            t(2021, 10, 19, 7, 37, 19),
            t(1965, 7, 18, 21, 29, 23),
            t(2003, 4, 29, 22, 0, 0),
            t(1901, 11, 10, 23, 44, 46, 123456),
            t(1999, 8, 21, 19, 0, 27, 1)
        ]))
示例#2
0
def test_ymdt_wrong_types(arg):
    DT = dt.Frame(A=[2000], B=[2.1], C=[11], D=[4])
    kwds = dict(year=f.A, month=f.C, day=f.D, hour=f.D, minute=f.C, second=0)
    kwds[arg] = f.B
    msg = "The %s column is not integer" % arg
    with pytest.raises(TypeError, match=msg):
        DT[:, ymdt(**kwds)]
示例#3
0
def test_invalid_dates():
    DT = dt.Frame(Y=[2000, 2001, 2002, 2003, 2004],
                  M=[1, 2, 3, 4, 5],
                  D=[-1, 0, 1, 100, 100000])
    assert_equals(
        DT[:, ymdt(f.Y, 2, 29, 0, 0, 0)],
        dt.Frame([
            t(2000, 2, 29, 0, 0, 0), None, None, None,
            t(2004, 2, 29, 0, 0, 0)
        ]))
    assert_equals(
        DT[:, ymdt(2020, f.M, 31, 0, 0, 0)],
        dt.Frame([
            t(2020, 1, 31, 0, 0, 0), None,
            t(2020, 3, 31, 0, 0, 0), None,
            t(2020, 5, 31, 0, 0, 0)
        ]))
    assert_equals(DT[:, ymdt(2020, 1, f.D, 0, 0, 0)],
                  dt.Frame([None, None,
                            t(2020, 1, 1, 0, 0, 0), None, None]))
示例#4
0
def test_ymdt_nones():
    DT = dt.Frame(A=[1, 2, 3, None, None, 4],
                  B=[1, 2, None, 3, None, 4],
                  C=[1, None, 2, 3, None, 4])
    RES = DT[:, ymdt(2001, f.B, f.C, f.A, f.B, f.C)]
    assert_equals(
        RES,
        dt.Frame([
            t(2001, 1, 1, 1, 1, 1), None, None, None, None,
            t(2001, 4, 4, 4, 4, 4)
        ]))
示例#5
0
def test_ymd_and_date():
    DT = dt.Frame(A=[d(2000, 1, 1)], y=[2000], m=[1], d=[1])
    msg = "When argument date= is provided, arguments year=, month= and " \
          "day= cannot be used."
    with pytest.raises(TypeError, match=msg):
        DT[:,
           ymdt(date=f.A,
                year=f.y,
                month=f.m,
                day=f.d,
                hour=0,
                minute=0,
                second=0)]
示例#6
0
def test_large_time():
    DT = dt.Frame(date=[d(2001, 1, 1)] * 7, hours=range(-60, 61, 20))
    RES = DT[:, ymdt(date=f.date, hour=f.hours, minute=0, second=0)]
    assert_equals(
        RES,
        dt.Frame([
            t(2000, 12, 29, 12, 0, 0),
            t(2000, 12, 30, 8, 0, 0),
            t(2000, 12, 31, 4, 0, 0),
            t(2001, 1, 1, 0, 0, 0),
            t(2001, 1, 1, 20, 0, 0),
            t(2001, 1, 2, 16, 0, 0),
            t(2001, 1, 3, 12, 0, 0)
        ]))
示例#7
0
def test_ymdt_with_date():
    DT = dt.Frame(date=[d(2001, 3, 15),
                        d(2017, 11, 23),
                        d(1930, 5, 14), None],
                  hour=[12, 19, 2, 7],
                  min=[30, 40, 50, 20])
    RES = DT[:,
             ymdt(date=f.date, hour=f.hour, minute=f.min, second=f.min // 2)]
    assert_equals(
        RES,
        dt.Frame([
            t(2001, 3, 15, 12, 30, 15),
            t(2017, 11, 23, 19, 40, 20),
            t(1930, 5, 14, 2, 50, 25), None
        ]))
示例#8
0
def test_ymdt_with_different_types():
    DT = dt.Frame(A=[2010, 2011, 2012] / dt.int32,
                  B=[3, 5, 7] / dt.int8,
                  C=[4, 1, 1] / dt.int64,
                  D=[12, 10, 3] / dt.int16,
                  E=[30, 50, 25] / dt.int32,
                  F=[0, 0, 0] / dt.int8)
    RES = DT[:, ymdt(f.A, f.B, f.C, f.D, f.E, f.F)]
    assert_equals(
        RES,
        dt.Frame([
            t(2010, 3, 4, 12, 30, 0),
            t(2011, 5, 1, 10, 50, 0),
            t(2012, 7, 1, 3, 25, 0)
        ]))
示例#9
0
def test_ymdt_unnamed():
    DT = dt.Frame(Y=[2001, 2003, 2005, 2020, 1960],
                  M=[1, 5, 4, 11, 8],
                  D=[12, 18, 30, 1, 14],
                  h=[7, 14, 22, 23, 12],
                  m=[15, 30, 0, 59, 0],
                  s=[12, 23, 0, 59, 27],
                  ns=[0, 0, 0, 999999000, 123000])
    RES = DT[:, ymdt(f.Y, f.M, f.D, f.h, f.m, f.s, f.ns)]
    assert_equals(
        RES,
        dt.Frame([
            t(2001, 1, 12, 7, 15, 12),
            t(2003, 5, 18, 14, 30, 23),
            t(2005, 4, 30, 22, 0, 0),
            t(2020, 11, 1, 23, 59, 59, 999999),
            t(1960, 8, 14, 12, 0, 27, 123)
        ]))
示例#10
0
def test_ymdt_ns_optional():
    DT = dt.Frame([[2001], [12], [31], [23], [59], [59]])
    RES = DT[:, ymdt(f[0], f[1], f[2], f[3], f[4], f[5])]
    assert_equals(RES, dt.Frame([t(2001, 12, 31, 23, 59, 59)]))
示例#11
0
def test_invalid_months():
    DT = dt.Frame(range(5))
    assert_equals(
        DT[:, ymdt(2021, f[0], 1, 0, 0, 0)],
        dt.Frame([None] + [t(2021, i, 1, 0, 0, 0) for i in range(1, 5)]))
示例#12
0
def test_ymdt_partial_groupby():
    DT = dt.Frame(A=range(5), B=range(5), C=range(1, 11, 2))
    RES = DT[:, ymdt(2000, dt.max(f.B), f.C, 0, 0, 0)]
    assert_equals(RES,
                  dt.Frame([t(2000, 4, 1 + 2 * i, 0, 0, 0) for i in range(5)]))
示例#13
0
def test_ymdt_multi_column():
    DT = dt.Frame(A=range(5), B=range(5), C=range(5))
    RES = DT[:, ymdt(2000, 5 + f[:], 1 + 2 * f[:], 0, 10 * f[:], 30)]
    exp = [t(2000, 5 + i, i * 2 + 1, 0, 10 * i, 30) for i in range(5)]
    assert_equals(RES, dt.Frame([exp] * 3))
示例#14
0
def test_ymdt_wrong_shape2():
    DT = dt.Frame(A=range(5), B=range(5), C=range(5))
    msg = r"Incompatible number of columns for the arguments of " \
          r"time.ymdt\(\) function"
    with pytest.raises(dt.exceptions.InvalidOperationError, match=msg):
        DT[:, ymdt(f.A, f.B, f.C, f[:2], 0, 1, f[:])]