Python 将包含行名、列名和频率的字段转换为术语文档矩阵

Python 将包含行名、列名和频率的字段转换为术语文档矩阵,python,numpy,pandas,scikit-learn,nltk,Python,Numpy,Pandas,Scikit Learn,Nltk,我有以下格式的文件: 输入: 我想把这个数据框转换成一个术语文档矩阵(最好是另一个)。实现这一目标的最有效方式是什么 出厂价格: 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['Ter

我有以下格式的文件: 输入:

我想把这个数据框转换成一个术语文档矩阵(最好是另一个)。实现这一目标的最有效方式是什么

出厂价格:

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
的列时,请考虑使用(或者如果需要聚合):

屈服

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

谢谢df.pivot_表适合我,因为原始df中的TermId列有重复项
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