Python 如何区分dataframe列中的唯一值并对其其他列进行计数?

Python 如何区分dataframe列中的唯一值并对其其他列进行计数?,python,dataframe,if-statement,Python,Dataframe,If Statement,我有一个像这样的数据框。如您所见,我已经执行了10个迭代步骤来获得以下结果 在一行中,B列描述了一个特定的人,而D列和E列确定了x y点的位置,因为它们位于第n帧中 我的问题是,如何在每次迭代中进行计数,以确定是否有人超时站在感兴趣的区域周围?如果它们位于感兴趣的区域,我可以将计数器增加1 region_x = np.min(monitor_region[:,0]) region_y = np.min(monitor_region[:,1]) region_width = monitor_reg

我有一个像这样的数据框。如您所见,我已经执行了10个迭代步骤来获得以下结果

在一行中,B列描述了一个特定的人,而D列和E列确定了x y点的位置,因为它们位于第n帧中

我的问题是,如何在每次迭代中进行计数,以确定是否有人超时站在感兴趣的区域周围?如果它们位于感兴趣的区域,我可以将计数器增加1

region_x = np.min(monitor_region[:,0])
region_y = np.min(monitor_region[:,1])
region_width = monitor_region.shape[1]
region_height = monitor_region.shape[0]
counter = 0

#Looking for logic here to distinguish specific person based on column B value
    if((region_x < person["point_x"] < (region_x + region_width)) and (region_y < person["point_y"] < (region_y + region_height))):
        print(counter += 1)
理想的结果是,我可以使用if语句来增加感兴趣区域内每个个体的计数器

例如,1号人物在感兴趣区域站立了3次。
人物2在感兴趣的区域站立了10次。

将人物和计数存储在字典中

注意:我认为这需要python>=3.6,但仅适用于字典末尾的f字符串打印

from collections import defaultdict
from pprint import pprint
from random import randint

import numpy as np


def fetch_data():
    return {
        "Person": randint(1, 10),
        "Frame": randint(1, 10),
        "X": randint(0, 500),
        "Y": randint(1, 10),
    }


people_in_roi = defaultdict(lambda: 0)

for i in range(100):

    data = fetch_data()

    if data["X"] > 250:
        people_in_roi[data["Person"]] += 1

for k, v in people_in_roi.items():
    print(f"Person: {k}\tIn ROI count: {v}")
输出:

Person: 4       In ROI count: 3
Person: 2       In ROI count: 7
Person: 9       In ROI count: 8
Person: 3       In ROI count: 2
Person: 1       In ROI count: 3
Person: 10      In ROI count: 4
Person: 5       In ROI count: 5
Person: 8       In ROI count: 2
Person: 7       In ROI count: 3
Person: 6       In ROI count: 4

如果你链接到某个地方的数据,我可以提供一个工作的例子,但我已经回答了一些应该让你接近@KevinGlasson您能否提供您回答此类问题的来源的链接?在每一次迭代的第0到第10帧中,我都会随着处理的每一步进行计数,而不是等待完成的数据,只执行操作。啊,我没有意识到你必须处理即将到来的数据,我会尝试更新我的回答更新,它处理一行数据,然后在获得下一行数据之前对其进行处理。它工作得非常好,谢谢。起初,我认为,创建一个独特的人员列表,然后将其作为关键字附加到字典中。因此,每个关键人物都存储一个x,y的列表。你认为这是一个好办法吗?我可能很难访问列表中的每个索引。