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中的基本切片和高级索引,它会更快。谢谢你,我可以继续。当然,在实际代码中,我不使用“列表”作为列表。如何获取唯一值的数量?我想得到一个变量,它具有值出现在列表中该位置的唯一次数。根据这一点,必须创建一定数量的虚拟机。计数器
可以用作字典,因此迭代其项
将为您提供键及其值。如果我的回答对您有帮助,请将其标记为“已接受”。您可以在文档中找到有关计数器的更多信息。