Я пытаюсь применить двойной 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](https://i.stack.imgur.com/IjTaU.png)
Затем я делаю тот же процесс, чтобы собрать столбец «содержимого» внутри списка:
stack2 = (
stack.groupby('source_id')['content']
.apply(np.array)
.to_frame('content')
.reset_index()
)
, который дает: ![enter image description here](https://i.stack.imgur.com/tdnB1.png)
Я пытаюсь выполнить оба действия в одной операции, чтобы получить такой фрейм данных:
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](https://i.stack.imgur.com/Zp2JN.png)
Моя главная цель - затем отобразить элемент «контент» на «англ». Порядок должен оставаться фиксированным. Я не уверен, что разделение этой операции безопасно для сохранения исходного порядка в списках.