在pandas DataFrame中查找值的VLOOKUP等效函数

3

我有一个pandas数据框架,具有以下结构:

DF_Cell, DF_Site
C1,A
C2,A
C3,B
C4,B
C5,B

我有一个非常长的循环(1亿次迭代),在循环中,我按顺序处理与DataFrame中的“DF_Cell”列相对应的字符串(第一次迭代创建C1,第二次迭代创建C2等)。

我想在数据框中查找与循环中处理的单元格(DF_Cell)对应的DF_Site。

我能想到的一种方法是将处理过的单元格放入一个单元格DataFrame中,然后在其上执行左合并,但这对于如此大的数据来说效率太低了。

有更好的方法吗?

2个回答

7
也许你想将DF_Cell设置为索引*:
In [11]: df = pd.read_csv('foo.csv', index_col='DF_Cell')
         # or df.set_index('DF_Cell', inplace=True)

In [12]: df
Out[12]: 
        DF_Site
DF_Cell        
C1            A
C2            A
C3            B
C4            B
C5            B

你可以使用 loc 来引用行或特定的条目:
In [13]: df.loc['C1']
Out[13]: 
DF_Site    A
Name: C1, dtype: object

In [14]: df.loc['C1', 'DF_Site']
Out[14]: 'A'

*假设这个有两列,你可以使用squeeze=True


0

我不太明白你在第一段中的意思,但是为了能够通过引用到不同列中对应类型的字段值来查找,我赞成Alexis的示例作为在pandas中实现此目的最习惯和高效的方式。然而,如果这真的代表了你的数据结构,你可以直接使用字典。

    data = {'a': 1, 'b': 2, 'c': 3}

    data['a'] 
    # 2

    map(lambda y: x[y]+1, ['c', 'b', 'a'])
    # [4, 3, 2]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接