Pandas - Выполнение Группового на 2 разных уровнях - PullRequest
1 голос
/ 15 апреля 2020

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

У меня есть кадр данных:

stack = (
    pd.DataFrame([
        ['source1', 'text...', 12.0],
        ['source1', 'text...', 100.0],
        ['source2', 'text...', 12.0],
        ['source1', 'text...', 24.0],
        ['source2', 'text...', 2.0],
        ['source3', 'text...', 48.0]],
        columns=['source_id', 'content', 'eng']))

До сих пор я группировал по «source_id» столбец «eng», чтобы все они были в списке:

stack1 = (
    stack.groupby('source_id')['eng']
    .apply(np.array)
    .to_frame('eng')
    .reset_index()
)

, что дает: enter image description here

Затем я делаю тот же процесс, чтобы собрать столбец «содержимого» внутри списка:

stack2 = (
    stack.groupby('source_id')['content']
    .apply(np.array)
    .to_frame('content')
    .reset_index()
)

, который дает: enter image description here

Я пытаюсь выполнить оба действия в одной операции, чтобы получить такой фрейм данных:

final = (
    pd.DataFrame([
        ['source1', ['text...', 'text...', 'text...'], [12.0, 100.0, 24.0]],
        ['source2', ['text...', 'text...'], [12.0, 2.0]],
        ['source3', ['text...'], [48.0]]],
        columns=['source_id', 'content', 'eng']))

, который вы даете так: enter image description here

Моя главная цель - затем отобразить элемент «контент» на «англ». Порядок должен оставаться фиксированным. Я не уверен, что разделение этой операции безопасно для сохранения исходного порядка в списках.

...