Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/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 - Fatal编程技术网

Python:计算列表中的唯一值

Python:计算列表中的唯一值,python,Python,我试图把列表中的相等值相加。列表如下所示: list = [["APP", "X", "v3", "CN_L", "2"], ["APP2", "X", "v3", "CN_M", "2"], ["APP3", "Z"

我试图把列表中的相等值相加。列表如下所示:

list = [["APP", "X", "v3", "CN_L", "2"],
           ["APP2", "X", "v3", "CN_M", "2"],
           ["APP3", "Z", "v3", "CN_L", "2"],
           ["APP2", "Z", "v3", "CN_M", "2"]]
import pandas as pd

df = pd.DataFrame(
[["APP", "X", "v3", "CN_L", "2"],
["APP2", "X", "v3", "CN_M", "2"],
["APP3", "Z", "v3", "CN_L", "2"],
["APP2", "Z", "v3", "CN_M", "2"]]
)

df[4].value_counts()

->

2    4
Name: 4, dtype: int64
等等

我主要关心的是第四个字段被发现的次数

我对Python不是很有经验。我已经在柜台上找到了一些东西,我试着用它做了些什么

from collections import Counter
list = [["APP", "X", "v3", "CN_L", "2"],
       ["APP2", "X", "v3", "CN_M", "2"],
       ["APP3", "Z", "v3", "CN_L", "2"],
       ["APP2", "Z", "v3", "CN_M", "2"]]

distinct_list=(Counter(list).keys())
没有for循环,我从这段代码中什么也得不到,并且得到了一个不可破坏的类型。
谁能将我推向正确的方向?

使用
[l[3]表示我的列表中的l]
获取索引3中的元素(第四个元素),然后只需调用列表中的
计数器即可获得唯一元素及其计数

from collections import Counter

my_list = [["APP", "X", "v3", "CN_L", "2"],
           ["APP2", "X", "v3", "CN_M", "2"],
           ["APP3", "Z", "v3", "CN_L", "2"],
           ["APP2", "Z", "v3", "CN_M", "2"]]

forth_elts = [l[3] for l in my_list]

print(Counter(forth_elts))


>>> Counter({'CN_M': 2, 'CN_L': 2})

请避免使用关键字和其他单词,如“str”或“list”来命名变量。

我会将数据放入如下数据框:

list = [["APP", "X", "v3", "CN_L", "2"],
           ["APP2", "X", "v3", "CN_M", "2"],
           ["APP3", "Z", "v3", "CN_L", "2"],
           ["APP2", "Z", "v3", "CN_M", "2"]]
from collections import Counter
    
new_list = [["APP", "X", "v3", "CN_L", "2"],
               ["APP2", "X", "v3", "CN_M", "2"],
               ["APP3", "Z", "v3", "CN_L", "2"],
               ["APP2", "Z", "v3", "CN_M", "2"]]

#import numpy library
import numpy as np

#convert the list into a numpy array 
arr=np.array(new_list)

#take the 4 th column and then apply the counter 
result=Counter(arr[:,4])
import pandas as pd

df = pd.DataFrame(
[["APP", "X", "v3", "CN_L", "2"],
["APP2", "X", "v3", "CN_M", "2"],
["APP3", "Z", "v3", "CN_L", "2"],
["APP2", "Z", "v3", "CN_M", "2"]]
)

df[4].value_counts()

->

2    4
Name: 4, dtype: int64
它将返回一个熊猫系列,基本上像dict一样工作,因此您可以:

x = df[4].value_counts()
x["2"] --> 4

这个数据的预期结果是什么?应该是2。计算列表中找到的唯一时间CN\u L或CN\M(或其他值)。安装numpy并将此列表转换为数组有点过分。哦,是的,但这对大规模向量不是更好吗?为什么更好?使用列表理解提取第四个元素将扫描整个列表,就像将此列表转换为数组一样。我看不出你会在哪里获得性能。由于numpy中的基本切片和高级索引,它会更快。谢谢你,我可以继续。当然,在实际代码中,我不使用“列表”作为列表。如何获取唯一值的数量?我想得到一个变量,它具有值出现在列表中该位置的唯一次数。根据这一点,必须创建一定数量的虚拟机。
计数器
可以用作字典,因此迭代其
将为您提供键及其值。如果我的回答对您有帮助,请将其标记为“已接受”。您可以在文档中找到有关
计数器的更多信息。