> However, if this is an order of magnitude difference , then it would push me to adopt the more-itertools formulation.
My friend it's much worse than a single order magnitude for small inputs
import time
import pandas as pd
ls = list(range(10))
b = time.monotonic_ns()
odds = [v for v in ls if v % 2]
e = time.monotonic_ns() - b
print(f"{e=}")
bb = time.monotonic_ns()
df = pd.DataFrame(ls)
odds = df[df % 2 == 1]
ee = time.monotonic_ns() - bb
print(f"{ee=}")
print("ratio", ee/e)
>>> e=1166
>>> ee=656792
>>> ratio 563.2864493996569
My friend it's much worse than a single order magnitude for small inputs