【发布时间】:2021-12-21 04:12:56
【问题描述】:
我对我认为的简单过滤任务有一些问题。 我们有一个大致具有这种形状的数据:
| name | item | cumsum |
|---|---|---|
| name1 | item 1 | 0.05 |
| item 2 | 0.10 | |
| item 3 | 0.31 | |
| name2 | item 1 | 0.02 |
| item 2 | 0.07 | |
| name3 | item 1 | 0.01 |
| item 2 | 0.07 | |
| item 3 | 0.21 | |
| name4 | item 1 | 0.03 |
| item 2 | 0.12 | |
| item 3 | 0.21 | |
| item 4 | 0.35 |
我想要返回包含小于 0.2 的项目和正上方项目的数据框。这是我想要作为输出的表格:
| name | item | cumsum |
|---|---|---|
| name1 | item 1 | 0.05 |
| item 2 | 0.10 | |
| item 3 | 0.31 | |
| name2 | item 1 | 0.02 |
| item 2 | 0.07 | |
| name3 | item 1 | 0.01 |
| item 2 | 0.07 | |
| item 3 | 0.21 | |
| name4 | item 1 | 0.03 |
| item 2 | 0.12 | |
| item 3 | 0.21 |
我尝试为每个“名称”找到 cumsum 大于 0.2 的“项目”,然后返回整个范围,索引为:
df = df.loc['name1']
idx = df.loc[df['cumsum'] > 0.2].index[0]
iidx = df.index.get_loc(idx) + 1
df = df.iloc[:iidx]
并为每个“名称”执行此操作。但是,这对于 name2 失败。
有人可以帮忙吗?
【问题讨论】:
-
我不明白...为什么 name4 - item4 被删除了?
-
您好,感谢您的提问!我想删除这一行,因为第 3 项是大于 0.2 的第一项。我对预期输出的描述做了一些改动。
标签: python pandas filtering multi-index