import pandas as pd import numpy as np n = 10e6 m = 1e6 %time d = pd.DataFrame({"x": np.random.randint(0,m,n), "y": np.random.random(n)}) %time dd = d[(d.x>=10) & (d.x<20)] %time dd = d.sort("x") %time dd = d.copy() %time dd["y2"] = 2*dd["y"] %time dd = d.groupby("x")["y"].mean() type(dd) %time dd = d.groupby("x", as_index = False)["y"].mean() type(dd) %time dk = d.sort_index(by = "x") %time dd = dk.groupby("x")["y"].mean() %time dd = dk.groupby("x", as_index = False)["y"].mean() %time dm = pd.DataFrame({"x": np.random.permutation(np.arange(m))}) %time dd = pd.merge(d, dm) %time dmk = dm.sort_index(by = "x") %time dd = pd.merge(dk, dmk)