我正在尝试在数据帧上应用double 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()
)
然后,我正在执行相同的过程以将“内容”列收集到列表中:
stack2 = (
stack.groupby('source_id')['content']
.apply(np.array)
.to_frame('content')
.reset_index()
)
我正在尝试将两个动作都合并为一个操作,以实现如下所示的数据帧:
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']))
我的主要目标是能够将“内容”元素映射到“ eng”。订单必须保持固定。对于将原始顺序保留在列表中,我不确定拆分此操作是否安全。