我有一只熊猫df,格式如下: 输入:
Freq Document TermId
3 A 112
5 A 055
1 C 003
4 D 001
2 B 003
1 D 089
我想将此数据帧转换为术语文档矩阵(最好是另一个熊猫 df)。实现这一目标的最有效方法是什么?
防爆输出:
Term/Document A B C D
001 0 0 0 4
003 0 2 1 0
055 5 0 0 0
089 0 0 0 1
112 3 0 0 0
请注意,所需的数据帧有一个索引,其标签来自df['TermId']
,其列标签来自df['Document']
。每当索引和列标签来自df
列时,请考虑使用df.pivot
(如果需要聚合,则df.pivot_table
):
import pandas as pd
df = pd.DataFrame({'Document': ['A', 'A', 'C', 'D', 'B', 'D'],
'Freq': ['3', '5', '1', '4', '2', '1'],
'TermId': ['112', '055', '003', '001', '003', '089']})
result = df.pivot(index='TermId', columns='Document', values='Freq').fillna(0)
print(result)
收益 率
Document A B C D
TermId
001 0 0 0 4
003 0 2 1 0
055 5 0 0 0
089 0 0 0 1
112 3 0 0 0