当前位置: 首页 > 面试题库 >

识别值的连续出现

濮阳国兴
2023-03-14
问题内容

我有这样的df:

Count
1
0
1
1
0
0
1
1
1
0

1如果两个或两个以上连续出现1inCount和a0如果没有连续出现,我想在新列中返回a
。因此,在新列中,每一行都将1基于该列中满足的此条件获得一个Count。我想要的输出将是:

Count  New_Value
1      0 
0      0
1      1
1      1
0      0
0      0
1      1
1      1 
1      1
0      0

我想我可能需要使用,itertools但是我一直在阅读,还没有发现我需要的东西。我希望能够使用此方法来计数任意数量的连续出现,而不仅仅是2。例如,有时我需要计算10次连续出现,在这里的示例中我只使用2次。


问题答案:

你可以:

df['consecutive'] = df.Count.groupby((df.Count != df.Count.shift()).cumsum()).transform('size') * df.Count

要得到:

   Count  consecutive
0      1            1
1      0            0
2      1            2
3      1            2
4      0            0
5      0            0
6      1            3
7      1            3
8      1            3
9      0            0

在这里,您可以设置任何阈值:

threshold = 2
df['consecutive'] = (df.consecutive > threshold).astype(int)

要得到:

   Count  consecutive
0      1            0
1      0            0
2      1            1
3      1            1
4      0            0
5      0            0
6      1            1
7      1            1
8      1            1
9      0            0

或者,只需一步即可:

(df.Count.groupby((df.Count != df.Count.shift()).cumsum()).transform('size') * df.Count >= threshold).astype(int)

在效率方面,pandas当问题的规模变大时,使用方法可以显着提高速度:

 df = pd.concat([df for _ in range(1000)])

%timeit (df.Count.groupby((df.Count != df.Count.shift()).cumsum()).transform('size') * df.Count >= threshold).astype(int)
1000 loops, best of 3: 1.47 ms per loop

相比:

%%timeit
l = []
for k, g in groupby(df.Count):
    size = sum(1 for _ in g)
    if k == 1 and size >= 2:
        l = l + [1]*size
    else:
        l = l + [0]*size    
pd.Series(l)

10 loops, best of 3: 76.7 ms per loop


 类似资料:
  • 问题内容: 我正在读取一堆CSV文件(一段时间内水位的测量数据)以对它们进行各种分析和可视化。 由于无法控制的各种原因,这些时间序列通常缺少数据,因此我要做两件事: 我总共算他们 如果我缺少的数据多于某个阈值,则丢弃数据集: 如果NaN的数量足够少,我想用 现在要解决的是:它的月度数据,所以如果我连续有两个以上的NaN,我也想丢弃该数据,因为那将意味着我“猜测”了整个季节,甚至更多。 的文档没有真

  • 如何使用REST API(带javascript SDK)Bing语音API实现连续语音识别? 使用do Javascript SDK示例:https://github.com/Microsoft/Cognitive-Speech-STT-JavaScript只能用麦克风转录短句

  • 我想在phonegap中创建应用程序,在Android和IOS中使用连续语音识别。我的应用程序应该等待用户的声音,当他/她说“下一步”时,应用程序应该更新屏幕并执行一些操作。 我发现这个插件:https://github.com/macdonst/SpeechRecognitionPlugin而且它工作得非常快。但在语音识别启动几秒钟后,语音识别器停止工作,但并没有语音。是否有任何方法或标志,如i

  • 我有一个实现识别侦听器(RecognitionListener)的活动。要使其连续,每次我再次启动侦听器时: 但是,它需要一些时间(大约半秒钟)才能开始,所以有半秒钟的间隙,没有人在听。因此,我怀念那段时差中所说的话。 另一方面,当我使用谷歌的语音输入时,代替键盘来口述消息——这个时间间隔不存在。意思是——有一个解决方案。 这是什么? 谢谢

  • 问题内容: 我想识别列表中的连续数字组,以便: 返回值: 并且想知道实现此目的的最佳方法是什么(特别是如果Python内置了某些东西)。 编辑:注意,我最初忘记提及个人数字应作为个人数字而不是范围返回。 问题答案: 是在4.0版中添加的。 演示版 应用此工具,我们将生成一个生成器函数来查找连续数字的范围。 所述源执行模拟一个经典配方(由@Nadia Alramli所证明)。 注意:more_ite

  • 我想使用Azure Speech服务从麦克风进行语音识别。我有一个使用recognize_once_async()在Python中顺利运行的程序,但它只能识别具有15秒音频限制的第一个话语。我对这个主题做了一些研究,并检查了MS(https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/py