首页 > 解决方案 > 使用熊猫提取字典指定的行

问题描述

我有一个大字典,其中每个键对应一个列表。例如

dictionary = {'1':[391,183,117,193,971],'2':[8817,38103,6163,173],'3':[8173,137,984,9173]}

我有一个总共有 1837391 行的数据框。我的数据框如下所示:

ID    start      end      name
1      29        120      Peter
2      130       200      Sarah
3      10        20       Nikki

现在我想计算所有那些值落在每个键的开始结束列分别指定的间隔内的行。

例如键1 117,183,193 落在区间内,所以它应该返回 3。因为 117 将在我的数据框的第 1 行找到,183 和 193 在第 2 行找到。我该如何实现?见解将不胜感激。

标签: pythonpython-3.xpandas

解决方案


使用 dict 理解

{
    k: sum(1 for i in v if i >= df.start.min() and i <= df.end.max())
    for k, v in dictionary.items()
}

输出

{'1': 3, '2': 1, '3': 1}

推荐阅读