Квантовать значения строк в группы и вычислять среднее значение для каждой группы - PullRequest
0 голосов
/ 18 октября 2018

Я хочу создать некоторую сумму моих данных, которая может иметь вид:

A    B
------
10   2
20   4
5    6
5    8
9    14

Я хочу сгруппировать эти строки на основе значений столбца B путем их квантования в группы из диапазона 5. Поэтому, если какое-либо значение столбца B попадает в диапазон 1-5 , строка будет принадлежать этой группе.В этом примере строки 1 и 2 попадают в группу 1-5 , тогда как 3 и 4 принадлежатв группу 6-10 .Каждая группа станет только одной строкой, содержащей значения столбца A .Итак, в итоге мы получим

A    B
------
15  1-5
5   6-10
9   11-15

Как это можно сделать с пандами, без итерации по каждой строке?

1 Ответ

0 голосов
/ 18 октября 2018

Используйте cut с arange для корзин с пониманием списка для меток и затем агрегируйте mean:

bins = np.arange(0, 16, 5)
labels = [f'{i+1}-{j}' for i, j in zip(bins[:-1], bins[1:])] 

binned = pd.cut(df['B'], bins=bins, labels=labels)
df1 = df.groupby(binned)['A'].mean().reset_index()[['A','B']]
print (df1)

    A      B
0  15    1-5
1   5   6-10
2   9  11-15
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...