コード例 #1
0
def test_explode():
    df = pd.DataFrame({'A': [[1, 2, 3], [9], [], [3, 4]], 'B': 1})
    exploded = bdf.explode(df)
    assert len(exploded) == 7
    assert all(df.B == 1)

    df["C"] = df.A.copy()
    exploded = bdf.explode(df)
    assert len(exploded) == 7
    assert all(df.B == 1)
    assert all(df.A == df.C)

    df["D"] = [[1], [3], [4, 5], []]
    with pytest.raises(ValueError) as e:
        exploded = bdf.explode(df)
    assert "different jaggedness" in str(e)

    df2 = pd.DataFrame({
        'A':
        [[np.arange(i + 1) + j for i in range((j % 2) + 1)] for j in range(4)],
        'B':
        np.arange(4)[::-1],
    })
    exploded = bdf.explode(df2)
    assert len(exploded) == 8
コード例 #2
0
def test_explode():
    df = pd.DataFrame({'A': [[1, 2, 3], [9], [], [3, 4]], 'B': 1})
    exploded = bdf.explode(df)
    assert len(exploded) == 6
    assert all(df.B == 1)
    assert not df.isnull().any().any()

    df["C"] = df.A.copy()
    exploded = bdf.explode(df)
    assert len(exploded) == 6
    assert all(df.B == 1)
    assert all(df.A == df.C)

    df["D"] = [[1], [3], [4, 5], []]
    with pytest.raises(ValueError) as e:
        exploded = bdf.explode(df)
    assert "different jaggedness" in str(e)

    df2 = pd.DataFrame({'A': [[np.arange(i + 1) + j for i in range((j % 2) + 1)] for j in range(4)],
                        'B': np.arange(4)[::-1],
                        })
    exploded = bdf.explode(df2)
    assert len(exploded) == 8

    df = pd.DataFrame({'number': [1, 8, 3], 'string': ['one', 'eight', 'three']})
    exploded = bdf.explode(df)
    assert len(exploded) == 3

    df["list"] = [list(range(i)) for i in df.number]
    exploded = bdf.explode(df)
    assert len(exploded) == 1 + 8 + 3
    assert np.array_equal(exploded.list, [0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2])