如何计数一个列的连续字符串值分组的另一个列的值在一个数据框架?



我有以下数据框架:


|Levels|Labels|Confidence|
|----------------------------
|0.    | Hands |  0.8
|0     |Leg    |  0.7    
|0     |Eye.   | 0.9
|1     |Ear    |0.9
|1     |Eye.   |0.8
|2     |Hands  |0.9
|2     |Eye.   |0.8
|3.    |Eye.   |0.8
:
:
: 

我想检查我的标签是否连续出现在我的关卡中(0,1,2,3,4,5…),以及有多少个连续的关卡(计算我的每个身体部位的连续关卡)。这是我的示例数据集,你可以看到标签"Eye"连续出现4级,"手";1 . .等。

这里有一个类似的问题:如何在熊猫数据框中找到连续相同字符串值的计数?
修改这个解决方案对我不起作用。我还尝试将其转换为NumPy数组,但也不起作用。

你能看看这个吗?

应该可以。只需定义自定义聚合函数。

import pandas as pd
df = pd.DataFrame({
'lvl': [0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 4],
'label': ['a', 'b', 'c', 'a', 'b', 'a', 'c', 'a', 'b', 'c', 'c'],
'confidence': [0.1, 0.5, 0.3, 0.6, 0.2, 0.4, 0.7, 0.8, 0.5, 0.2, 0.8]
})

agg_func = {
'lvl': [('length', lambda x: x.ne((x+1).shift()).cumsum().value_counts().max())]
}
result = df.groupby('label').agg(agg_func)
result.columns = result.columns.droplevel(0)
print(result)
length
label        
a           4
b           2
c           3

相关内容

最新更新