Как сгруппировать записи с помощью Pandas cut ()? - PullRequest
0 голосов
/ 26 мая 2018

Моя цель - сгруппировать n записей по 4, скажем, например:

0-3
4-7
8-11
etc.

найти max() значение каждой группы из 4 на основе одного столбца среди других столбцов и создать новыйнабор данных или CSV-файл.Операция max() будет выполняться для одного столбца, в то время как другие столбцы останутся без изменений.

Основываясь на проведенном здесь исследовании (Stackoverflow), я попытался настроить и применить следующее решение дляэтот сайт в моем наборе данных, но он не дал мне моих ожиданий:

# Group by every 4 row until the len(dataset)
groups = dataset.groupby(pd.cut(dataset.index, range(0,len(dataset),3))
needataset = groups.max()

Я получаю результаты, подобные следующим:

Column 1  Column 2 ... Column n
0. (0,3]
1. (3,6]

Целевой столбец для *Операция 1015 * также не дала ожидаемого результата.Я буду признателен за любое руководство по решению этой проблемы.

1 Ответ

0 голосов
/ 26 мая 2018

Этот пример должен вам помочь.Здесь я создаю DataFrame некоторых случайных значений от 0 до 100 с шагом 5 и группирую эти значения в группы по 4 (sort_values действительно важно, это облегчит вашу жизнь)

df = pd.DataFrame({'value': np.random.randint(0, 100, 5)})
df = df.sort_values(by='value')
labels = ["{0} - {1}".format(i, i + 4) for i in range(0, 100, 5)]
df['group'] = pd.cut(df.value, range(0, 105, 5), right=False, labels=labels)
groups = df["group"].unique()

Затем я создаю массив для максимальных значений

max_vals = np.zeros((len(groups)))
for i, group in enumerate(groups):
    max_vals[i] = max(df[df["group"] == group]["value"])

И затем DataFrame из этих максимальных значений

pd.DataFrame({"group": groups, "max value": max_vals})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...