задан следующий фрейм данных в pandas:
import numpy as np
df = pandas.DataFrame({"a": np.random.random(100), "b": np.random.random(100), "id": np.arange(100)})
где id
- это идентификатор для каждой точки, состоящей из значений a
и b
, как я могу использовать bin a
и b
в заданный набор ящиков (чтобы затем я мог взять среднее/среднее значение a
и b
в каждом ящике)? df
может иметь NaN
значения для a
или b
(или обоих) для любой заданной строки в df
. спасибо.
Вот лучший пример с использованием решения Джо Кингтона с более реалистичным df. Я не знаю, как получить доступ к элементам df.b для каждой группы df.a ниже:
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?
# ...