【发布时间】:2019-09-29 18:14:04
【问题描述】:
我有一个看起来像这样的 pandas DataFrame:
| Id | Filter 1 | Filter 2 | Filter 3 |
|----|----------|----------|----------|
| 25 | 0 | 1 | 1 |
| 25 | 1 | 0 | 1 |
| 25 | 0 | 0 | 1 |
| 30 | 1 | 0 | 1 |
| 31 | 1 | 0 | 1 |
| 31 | 0 | 1 | 0 |
| 31 | 0 | 0 | 1 |
我需要转置此表,添加带有过滤器名称的“名称”列并汇总过滤器列值。结果表应该是这样的:
| Id | Name | Summ |
| 25 | Filter 1 | 1 |
| 25 | Filter 2 | 1 |
| 25 | Filter 3 | 3 |
| 30 | Filter 1 | 1 |
| 30 | Filter 2 | 0 |
| 30 | Filter 3 | 1 |
| 31 | Filter 1 | 1 |
| 31 | Filter 2 | 1 |
| 31 | Filter 3 | 2 |
到目前为止,我唯一的解决方案是在按 Id 列分组时使用 apply 函数,但这种方法对我的情况来说太慢了 - 数据集可以超过 40 列和 50_000 行,我该如何使用 pandas原生方法?(例如 Pivot、Transpose、Groupby)
【问题讨论】: