gpt4 book ai didi

python - 将 3 列数据框转换为具有按范围定义的列的矩阵

转载 作者:行者123 更新时间:2023-12-04 08:26:40 24 4
gpt4 key购买 nike

我有一个 3 列数据框。假设我的列是“doc”、“word”、“count”,每行显示一个单词在文档中出现的次数。

| doc | word | count |
+-----+------+-------+
| 0 | 0 | 10 |
| 0 | 7 | 2 |
| 0 | 4 | 5 |
| 1 | 2 | 5 |
+-----+------+-------+
我想将此数据框转换为矩阵,行作为文档,列作为单词,因此我执行以下操作:
matrix = pd.pivot_table(my_df, index="doc", columns="word", values="count", fill_value=0)
我得到的是一个有列的矩阵 [0,2,4,7] .但是,我想要的是为我的列设置另一个范围,例如 range(10): [0,1,2,3,4,5,6,7,8,9] .后者将导致一些列的所有条目都为 0,这就是我想要的。
我怎样才能做到这一点?

最佳答案

IIUC,你想创建一个稀疏矩阵文档 vs 单词,你可以这样做:

import pandas as pd
from scipy.sparse import csr_matrix

rows, cols, data = zip(*df.to_numpy())
mat = csr_matrix((data, (rows, cols)), shape=(max(rows) + 1, max(cols) + 1))
res = pd.DataFrame(data=mat.toarray())
print(res)
输出
    0  1  2  3  4  5  6  7
0 10 0 0 0 5 0 0 2
1 0 0 5 0 0 0 0 0
通过这种方法,范围是自动确定的。
更新
如果你想有 10 列,你可以这样做:
rows, cols, data = zip(*df.to_numpy())
mat = csr_matrix((data, (rows, cols)), shape=(max(rows) + 1, 10))
res = pd.DataFrame(data=mat.toarray())
print(res)
输出
    0  1  2  3  4  5  6  7  8  9
0 10 0 0 0 5 0 0 2 0 0
1 0 0 5 0 0 0 0 0 0 0

关于python - 将 3 列数据框转换为具有按范围定义的列的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65224777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com