python - 带有复选标记的 CSV 中的 Pandas 数据透视表
问题描述
我有一个看起来像这样的 CSV 文件
数据源 | 目的地 | 描述 |
---|---|---|
一种 | 1 | 说明 |
乙 | 2 | B 描述 |
C | 3 | C 描述 |
一种 | 3 | 说明 |
我正在寻找一个看起来像这样的数据透视表
描述 | 数据源 | 1 | 2 | 3 |
---|---|---|---|---|
说明 | 一种 | X | X | |
B 描述 | 乙 | X | ||
C 描述 | C | X |
到目前为止我得到的最接近的是这个
table = pd.pivot_table(df, index='data_source', columns='destination', values=['data_source'], aggfunc='first')
我尝试使用 ['description', 'data_source'] 作为索引来获取 description 和 data_source 行,但我最终得到一个 0 列表。我也不知道传递给 aggfunc 以在有价值的单元格中输出“x”的数据类型。
我是 Pandas 的新手,我还没有一个好的心智模型,所以感谢任何帮助。
解决方案
你正在寻找pd.crosstab
out = pd.crosstab([df['data_source'],df['description']], df['destination']).reset_index()
Out[101]:
destination data_source description 1 2 3
0 A Adescription 1 0 1
1 B Bdescription 0 1 0
2 C Cdescription 0 0 1
推荐阅读
- database - 将 Firebase 用于项目
- spring-boot - 关闭 Kafka 侦听器使 JVM 退出
- spring-webflux - 如何测试 EmitterProcessor 是否从 RestController 接收和发出消息?
- python - 如何找到字符串中具有多个“孔”的所有可能排列?
- css - 如何在 ui Material Textfield 中应用我自己的 css 样式?
- git - 无法完成github分享过程
- python - 如何使用 Django Channels 发送 websocket 延迟组消息?
- java - 批量重命名 JAX 绑定文件中的 complexType 元素,即 bindings.xjb?
- elisp - 我需要我的函数使用 LISP while 循环和欧几里得算法返回给定输入的 GCD 我得到的输出是 0
- sql - 更新表时触发重新运行 SQL 查询