python - 将 3 列数据框转换为由范围定义的列的矩阵
问题描述
我有一个 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 的列,这就是我想要的。
我怎样才能做到这一点?
解决方案
您要求reindex
:
matrix = (pd.pivot_table(df, index="doc",
columns="word",
values="count", fill_value=0)
.reindex(range(10), axis=1, fill_value=0)
)
输出:
word 0 1 2 3 4 5 6 7 8 9
doc
0 10 0 0 0 5 0 0 2 0 0
1 0 0 5 0 0 0 0 0 0 0
推荐阅读
- python - 如何通过忽略库版本使用 pip 在 python 中安装大量库?
- swift - 有没有一种更清洁的方法来部分填充 tableView
- python - OpenCV 从不同的角度创建不失真的图像
- kubernetes - 用于 kubernetes 的 DaemonSet 在特权模式下工作正常,但即使添加了所有 linux 功能也会失败
- azure - 使用“msbot 克隆服务”bot-builder-tools 命令时,从 Azure 门户中删除的资源仍然可用
- javascript - 如何在道具和对象上使用方法,然后返回对象
- java - 未解决的类 MainActivity
- java - 错误:无法找到或加载主类 sun.applet.AppletViewer
- javascript - 为密码中的特定字符设置规则
- cordova - 本地存储未保存在科尔多瓦