簡體   English   中英

Python:計算列表中的唯一值

[英]Python : Counting unique values in 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"]]

等等

我主要關心找到第 4 個字段的次數。

我對 Python 不是很有經驗。 我已經找到了一些關於 Counter 的東西,並用它嘗試了一些東西。

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] for l in my_list]獲取索引 3 處的元素(第 4 個元素),然后只需在列表中調用Counter即可為您提供唯一元素及其計數。

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”來命名變量。

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])

我會將數據放入 pandas Dataframe 中,如下所示:

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

它會返回一個 pandas 系列,它基本上像字典一樣工作,所以你可以這樣做:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM