如何高效替换pandas DataFrame中的值?

1 投票
1 回答
1537 浏览
提问于 2025-04-19 16:37

我有一个很大的数据表(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 的内容。

撰写回答