binning un marco de datos en pandas en Python

Dado el siguiente marco de datos en pandas:

import numpy as np
df = pandas.DataFrame({"a": np.random.random(100), "b": np.random.random(100), "id": np.arange(100)})

dóndeid es una identificación para cada punto que consiste en unaa yb valor, ¿cómo puedo bina yb en un conjunto específico de contenedores (para que luego pueda tomar el valor medio / promedio dea yb en cada bandeja)?df podría tenerNaN valores paraa ob (o ambos) para cualquier fila dada endf. Gracias.

Aquí hay un ejemplo mejor utilizando la solución de Joe Kington con un df más realista. De lo que no estoy seguro es de cómo acceder a los elementos df.b para cada grupo df.a a continuación:

a = np.random.random(20)
df = pandas.DataFrame({"a": a, "b": a + 10})
# bins for df.a
bins = np.linspace(0, 1, 10)
# bin df according to a
groups = df.groupby(np.digitize(df.a,bins))
# Get the mean of a in each group
print groups.mean()
## But how to get the mean of b for each group of a?
# ...

Respuestas a la pregunta(4)

Su respuesta a la pregunta