Python Pandas:浏览数据框并进行比较的最有效方法是什么?

时间:2019-03-28 03:59:13

标签: python pandas

我有一个唯一ID的列表,例如['ABC','DEF','FGR'...等。另外,我有一个数据框(A),其中包含这些ID和其他变量。我的目标是有效检查数据框A的ID列是否与我的唯一ID列表中的任何ID匹配(如果有多行,我可以从具有唯一ID'ABC'的A中获得多行)。

我有一个forloop,它遍历列表中的每个ID,然后使用该索引,如果该索引与A的ID列值匹配,我正在搜索我的数据框A,如果它确实创建了一个包含那些索引的临时数据框匹配的行。

这是我用来查找ID的唯一列表:

ID_list = ['ABC', 'DEF', 'GHI' , 'JKL', ...]

这是数据框A:

id   | name        | freq
-------------------------
 ABC | Khar        | 5
 ABC | SantaCruz   | 3
 DEF | Sion        | 2
 ABC | VT          | 1
 DEF | newFort     | 3
 GHI | Bandra      | 2
 GHI | Worli       | 1
 JKL | Sanpada     | 3
 ABC | Joe         | 2
 DEF | Sally       | 1
 JKL | Elphiston   | 2
 GHI | Currey Road | 1

我要在数据框A中搜索的Python代码是:

for i in ID_list:
    # temporary dataframe to hold the rows with the same ID
    temp = pd.DataFrame([])
    print('Currently on ID:', i)

    # if ID matches id value in A then put that row in temp
    for index in range(0, len(A)):
        if A.iloc[index]['id'] == i:
           temp = temp.append(A.iloc[index])
    print(temp)

然后,我的温度将如下所示:

iteration 1:

id   | name        | freq
-------------------------
 ABC | Khar        | 5
 ABC | SantaCruz   | 3
 ABC | Joe         | 2
iteration 2:
id   | name        | freq
-------------------------
 DEF | Sion        | 2
 DEF | newFort     | 3
 DEF | Sally       | 1

以此类推。

您认为这样有效吗?如果没有,我该如何提高效率?

谢谢。

0 个答案:

没有答案