如何高效替换pandas DataFrame中的值?
我有一个很大的数据表(600,000行,2列),叫做data,第二列里有50,000个独特的值,这些值在数据中分布着。
数据大概长这样:
image_id term
0 56127 23001
1 56127 763003
2 56127 51002
3 26947 581007
4 26947 14001
5 26947 95000
6 26947 92000
7 26947 62004
8 26947 224007
...600k more
另外,我还有一个叫terms_indexed的序列,它的索引是这50,000个术语,长得像这样。
NewTerm
Term
23001 9100
763003 402
51002 10608
581007 900
14001 42107
95000 900
92000 4002
62004 42107
224007 9100
...50k more
我想用这个带有索引的序列来高效地替换原始数据表中的那些值。到目前为止,我是用以下这一行代码来完成这个替换的:
for i in range(data.shape[0]):
data.loc[i, 'term'] = int(terms_indexed.ix[data.iloc[i][1]])
不过,这个替换操作花费的时间太长了。在一台配有8GB内存的英特尔i7处理器的电脑上,大约需要35分钟。我想知道有没有更好的方法来完成这个操作。谢谢!
1 个回答
4
如果我理解你的情况没错的话,你可以直接用 df['term'] = df['term'].map(terms_indexed)
这行代码。这里的 series1.map(series2)
就是把 series1 的值当作索引,去 series2 中查找对应的值,简单来说就是“翻译” series1 的内容。