Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列中每次出现后,每个元素的数据帧计数出现次数_Python_Pandas - Fatal编程技术网

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

Python 在列中每次出现后,每个元素的数据帧计数出现次数,python,pandas,Python,Pandas,给定一个像这样的数据帧 pd.DataFrame(数据={“代码”:[1,1,1,0,0,1,1,0,0,1,2]}) 时间码 0 1 1 1 2 1 3 0 4 0 5 1 6 1 7 0 8 0 9 1 10 2 11 2 我想计算每次新出现后,code中的每个元素出现的次数。请注意,我不想为每个元素计算.value\u counts()。例如,对于c

给定一个像这样的数据帧

pd.DataFrame(数据={“代码”:[1,1,1,0,0,1,1,0,0,1,2]})
时间码
0       1
1       1
2       1
3       0
4       0
5       1
6       1
7       0
8       0
9       1
10      2
11      2
我想计算每次新出现后,
code
中的每个元素出现的次数。请注意,我不想为每个元素计算
.value\u counts()
。例如,对于
code
value
1
而言,它显示3次,value
0
显示2次,value
2
显示1次。这项任务的类比是计算用户会话数

预期产出:

代码计数\u发生次数
1       3
0       2
2       1

非常确定这可以在普通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}

非常确定这可以在普通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()

这将仅在元素不等于前一个元素的情况下对代码中的值进行计数。

使用pandas,您可以执行以下操作

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

这将只在元素不等于前一个元素的情况下计算代码中的值。

我不理解值2,对我来说它出现了2次正如我所说的,我不希望
值本身计算,而是希望元素在每个元素更改后出现多少次。目标逻辑将位于执行移位和检查
previous\u code!=当前代码
和每次发生时的sum+1,每个代码。我不理解值2,对我来说它出现2次正如我所说,我不希望
值本身计数
,而是希望元素在每个元素更改后出现多少次。目标逻辑将位于执行移位和检查
previous\u code!=当前代码
和每次发生时的总和+1,每个代码。在这种情况下,它不起作用,因为
3
出现2次。然而,它适用于所有其他的。也许应该有额外的逻辑来处理最后一个元素?这是一个很好的解决方案,但是在纯python中这样做有价值吗?我的意思是熊猫有这么多方便的功能,为什么不使用呢?--我真的不想无礼,但这让我想起了Fortran时代,它的可读性比@gereleth solution@Magellan88要差得多。熊猫是伟大的,我目前学习它的数据科学的先决条件,但OP并没有严格要求熊猫的方式。只是一个想法。这是一个实际的解决方案,效果很好。然而,我不能给你这个问题的解决方案奖励,因为我更喜欢@gereleth,因为他以熊猫的方式实现了它。不过,谢谢你的回答!在这种情况下,当
3
出现2次时,它不起作用。然而,它适用于所有其他的。也许应该有额外的逻辑来处理最后一个元素?这是一个很好的解决方案,但是在纯python中这样做有价值吗?我的意思是熊猫有这么多方便的功能,为什么不使用呢?--我真的不想无礼,但这让我想起了Fortran时代,它的可读性比@gereleth solution@Magellan88要差得多。熊猫是伟大的,我目前学习它的数据科学的先决条件,但OP并没有严格要求熊猫的方式。只是一个想法。这是一个实际的解决方案,效果很好。然而,我不能给你这个问题的解决方案奖励,因为我更喜欢@gereleth,因为他以熊猫的方式实现了它。不过,谢谢你的回答!