Pandas DataFrame подсчитывает вхождения для каждого элемента после каждого появления в столбце - PullRequest
1 голос
/ 24 сентября 2019

Учитывая данный кадр данных панд, как этот

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() для каждого элемента.Например, для codes значение 1 появляется 3 раза, значение 0 появляется 2 раза, а значение 2 появляется 1 раз.По аналогии с задачей можно было бы подсчитать количество сеансов пользователя.

Ожидаемый результат:

codes   count_occurences
1       3
0       2
2       1

Ответы [ 2 ]

4 голосов
/ 24 сентября 2019

С пандами вы можете сделать что-то вроде

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

Это будет считать значения в кодах только там, где элемент не равен предыдущему.

2 голосов
/ 24 сентября 2019

Уверен, что это может быть достигнуто на простом 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...