首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提取特定类别之前的最后3个索引数字

如何提取特定类别之前的最后3个索引数字
EN

Stack Overflow用户
提问于 2019-06-23 20:01:36
回答 3查看 65关注 0票数 1

更新

我有以下数据集,我希望得到一个列表,其中包括“是”标签之前的最后三个索引。我的数据集:

代码语言:javascript
复制
i            category
0               NO
1               NO
2               NO
3               NO
4               NO
5               YES
6               YES
7               YES
8               NO
9               NO
10              NO
11              YES
12              YES

我期望结果是:

list=2,3,4,8,9,10

请注意,是的通常发生在连续的范围内(2-6个样本).我希望得到最后三个指数之前的第一个是在范围内。

P.S:数据集存储在csv文件中,我使用熊猫导入

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-23 20:49:42

也许不是最重要的节奏曲,但如果没有for循环和一些切片,我想不出有一种方法可以做到这一点,感觉就像一种笨拙的方法:

代码语言:javascript
复制
a = df[((df.category.ne(df.category.shift()))==True) & (df.category == 'YES')].index


indices = []
for x in a:
    indices.append(df.iloc[slice(max(0, x-3), min(x, len(df)))])
new_df = pd.concat(indices) # if you wanted this as a df.

list(new_df.index)


[2, 3, 4, 8, 9, 10]
票数 2
EN

Stack Overflow用户

发布于 2019-06-23 20:39:14

让我们假设,正如您在您的评论中所说的,在每一个“是”之前总是至少有三个项目。一个可能的解决办法是

代码语言:javascript
复制
import pandas as pd

flatten = lambda l: [item for sublist in l for item in sublist]

df = pd.DataFrame({"category":['NO', 'NO', 'NO', 'NO', 'NO',
                               'YES', 'NO', 'NO', 'NO', 'NO',
                               'NO','YES','NO']})
# take only indices where YES occurs
idx = df[df["category"]=="YES"].index

# for every i in idx take the previuos 3 indices
lst = [list(range(i-3, i)) for i in idx]

# flatten lst
lst = flatten(lst)
票数 1
EN

Stack Overflow用户

发布于 2019-06-23 21:03:57

以下是一些易于阅读的代码,可以做您想做的事情。它遍历列表的索引并提取所需的内容。

第二个for循环是简单地将结果列表中的双列表扁平。

代码语言:javascript
复制
li= ['1','2','3','4','YES','6','7','8','9','0','YES']
result = []
for x in range(len(li)):
  if li[x] is 'YES':
    result.append(li[x-3:x])


final= []
for x in result:
  for y in x:
    final.append(y)

final = '2','3','4','8','9','0‘

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56727354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档