从矩阵中检索特定值

2024-04-19 01:57:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的数据:

array = 
[[1, 2019, done]
[1,2019 , undone]
...
[1, 2018, done]
[1, nan, done]
[2, 2017, undone]]

我想检索所有只有一次值的日期,以及列表中每个日期的“完成”数

我试着得到我想要的结果来分析数据

date, counter= [], []

for i in range (len(array)):
    if array[i][1] not in date and array[i][1]!="":
        date.append(array[i][1])

for j in range(len(X)):
    count = 0
    for i in range(len(array)):
        if X[j] == array[i][1] and array[i][2] == "done":
            count +=1
    counter.append(count)

我现在有一个重复值的日期列表,还有很多“nan”值 X=[201920192019,南,南,南,2017…]

我想弄点像那样的东西 日期=[201920182017…] 计数器=[200150100,…]


Tags: and数据in列表fordatelenif
1条回答
网友
1楼 · 发布于 2024-04-19 01:57:03

我假设你有以下数据:

done = "done"
undone = "undone"
nan = "nan"

array = [[1, 2019, done],
         [1, 2019, undone],
         [1, 2018, done],
         [1, nan, done],
         [2, 2017, undone]]

要仅选择具有年份的日期,do可以使用list comprehension

selection = [[m, y, f] for m, y, f in array if y != nan]

你会得到:

[[1, 2019, 'done'],
 [1, 2019, 'undone'],
 [1, 2018, 'done'],
 [2, 2017, 'undone']]

要计算“完成”的次数,可以使用^{}

groups = collections.Counter()
for month, year, flag in selection:
    if flag == done:
        groups[(month, year)] += 1

你会得到:

Counter({(1, 2019): 1, (1, 2018): 1})

相关问题 更多 >