Closed
Description
from mailing list:
To follow up:
I used timeit.Timer() to time this two different ways:
a) return a slice of a Panel using panel.ix[foo, bar, qux] (where foo,
bar, and qux are arrays)
b) i) iterate through the items of the panel that are in foo
ii) do a slice on each DataFrame with data.ix[bar, qux]
iii) save the slice
iv) reassemble the slices into a new, smaller Panel
v) return the new Panel
For the data I was using (10 items x 768432 major x 9 minor), the
results I got were:
t = timeit.Timer(a, setup=setup)
print min(t.repeat(repeat=3, number=10))
2.52914
t = timeit.Timer(b, setup=setup)
print min(t.repeat(repeat=3, number=10))
0.54757
This seems odd to me. Approach b is not only faster than a, but almost
5-fold faster. It appears that Panel.ix[foo, bar, qux] is doing
something even slower than the dumb approach embodied in B - either
that or I'm doing something horribly wrong! :-)
Iain