【发布时间】:2021-10-04 12:14:47
【问题描述】:
这里是 Python 和 Pandas 的新手。
我正在尝试将基于单独列中的值的前 n 行与 Pandas 合并为一行。
使用一个假设的例子,假设我有下表已经按“金额”列进行了降序排序:
| store_id | item | amount |
|---|---|---|
| 00001 | shirt | 5 |
| 00001 | sock | 3 |
| 00001 | pants | 1 |
| 00002 | sock | 4 |
| 00002 | pants | 2 |
| 00002 | shirt | 1 |
我想生成一个按 store_id 分组的表,每行是基于“金额”列的值的前 n 个项目的列表。因此,如果我想按 store_id 查看前 2 项,表格将如下所示:
| store_id | item |
|---|---|
| 00001 | ['shirt', 'sock'] |
| 00002 | ['sock', 'pants'] |
我尝试按照此处的建议进行操作:How to combine multiple rows into a single row with pandas,但是我一直遇到“'GroupedData' object is not subscriptable”错误。
非常感谢有关如何解决此问题的任何建议。提前谢谢你。
【问题讨论】:
-
您是只想从每个组中获取 n 个顶部元素还是从每个组中获取 n 个最大元素?如果是前者,则使用
df.groupby(...).first(2)