在列中每次出现后,每个元素的数据帧计数出现次数

2024-04-19 21:14:36 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个像这样的数据帧

pd.DataFrame(data={"codes": [1,1,1,0,0,1,1,0,0,1,2,2]})

time    codes
0       1
1       1
2       1
3       0
4       0
5       1
6       1
7       0
8       0
9       1
10      2
11      2

我想计算一下codes中的每个元素在每次新出现之后出现的次数。注意,我不想为每个元素计算.value_counts()。例如,codes1出现3次,值0出现2次,值2出现1次。类似的任务是计算用户会话数。你知道吗

预期产量:

codes   count_occurences
1       3
0       2
2       1

Tags: 数据用户元素dataframedatatimevaluecount
2条回答

很确定这可以在普通Python中实现。你知道吗

myList = [1,2,6,2,2,4,3,3,4,4,6,1,1,2,3]
listSet = set(myList)
count = {}

for k in listSet:
    count[k]=0

for k in range(0, len(myList)-1):
    if myList[k]!=myList[k+1]:
        count[myList[k]]+=1
count[myList[k+1]]+=1
print(count)

这将提供:

{1: 2, 2: 3, 3: 2, 4: 2, 6: 2}

有了熊猫,你可以做

df.codes.loc[df.codes!=df.codes.shift()].value_counts()

这将只在元素不等于上一个元素的情况下对代码中的值进行计数。你知道吗

相关问题 更多 >