我有以下数据框架:
|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