我有一个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中然后对它进行左合并,但这对于这样的大数据来说效率太低了。
有更好的方法吗?
答案 0 :(得分:6)
也许您想将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
。
答案 1 :(得分:0)
我真的不明白你在第一段中的意思,但是为了能够通过参考不同列中的相应类型来查找字段值,我同意Alexis的例子是最惯用和最有效的在熊猫中做到这一点的方法。但是,如果这确实代表了您的数据结构,您可以使用dict。
data = {'a': 1, 'b': 2, 'c': 3}
data['a']
# 2
map(lambda y: x[y]+1, ['c', 'b', 'a'])
# [4, 3, 2]