def METHOD_NAME(self):
    for i in range(10):
        job = self.project.open_job(dict(a=i, b=i * 2))
        job.doc.c = float(i)
        job.doc.d = float(i * 3)
    # Including no keys should return an empty DataFrame
    df = self.project.to_dataframe(usecols=[])
    assert len(df.columns) == 0
    assert len(df) == 0
    # Excluding all keys should return an empty DataFrame
    def usecols(column):
        return column not in ["sp.a", "sp.b", "doc.c", "doc.d"]
    df = self.project.to_dataframe(usecols=usecols)
    assert len(df.columns) == 0
    assert len(df) == 0
    # Include one state point column
    df = self.project.to_dataframe(usecols=["sp.a"])
    assert "sp.a" in df.columns
    assert len(df.columns) == 1
    assert len(df) == len(self.project)
    # Exclude one state point column
    def usecols(column):
        return column != "sp.b"
    df = self.project.to_dataframe(usecols=usecols)
    assert "sp.a" in df.columns
    assert "sp.b" not in df.columns
    assert "doc.c" in df.columns
    assert "doc.d" in df.columns
    assert len(df.columns) == 3
    assert len(df) == len(self.project)
    # Include one document column
    df = self.project.to_dataframe(usecols=["doc.c"])
    assert "doc.c" in df.columns
    assert len(df.columns) == 1
    assert len(df) == len(self.project)
    # Exclude one document column
    def usecols(column):
        return column != "doc.d"
    df = self.project.to_dataframe(usecols=usecols)
    assert "sp.a" in df.columns
    assert "sp.b" in df.columns
    assert "doc.c" in df.columns
    assert "doc.d" not in df.columns
    assert len(df.columns) == 3
    assert len(df) == len(self.project)