переиндексировать группу, чтобы добавить недостающие строки - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь переиндексировать группы, чтобы расширить кадры данных с пропущенными значениями.Подобно тому, как resample работает для временных индексов, я пытаюсь добиться этого для нормальных целочисленных значений.

Таким образом, для группы, принадлежащей к определенному ключу группы (proID в моем случае), должно быть определено максимальное существующее целочисленное значение(указание конечной точки процесса повторной выборки).Группа должна быть расширена (я пытался добиться этого с помощью переиндексации) отсутствующими значениями этого целочисленного значения.

У меня есть кадр данных, имеющий много строк на proID, и целочисленное значение bin, которое может варьироваться от 0 до100 и несколько бессмысленных столбцов.По сути, значение bin должно быть заполнено, если некоторые данные отсутствуют аналогично тому, как повторная выборка будет делать для временных индексов.

def rsmpint(df):
    mx = df.bin.max() #identify maximal existing bin value in dataframe (group)
    no = (mx * 20 / 100).astype(np.int64) + 1 #calculate number of bin values
    idx = pd.Index(np.linspace(0,mx,no), name='bin') # define full bin-Index for df (group)
    df.set_index('bin').reindex(idx).ffill().reset_index(drop=True, inplace=True)
    return df


DF.groupby('proID').apply(rsmpint)

Предположим, что для конкретного proID в настоящее время существует 5 значений bin [0, 15, 20,40, 65] (т.е. 5 строк исходной группы proID).Выходными данными должна быть расширенная группа proID со значениями бинов [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 65] с содержимым «бессмысленных» столбцов, заполненных с помощью ffill().

...