我有一个大的DataFrame(600k,2)命名数据,基本上在第二列中有一组50k沿数据分布的唯一值。

数据看起来像这样

    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的系列,其索引由这样的50k个术语组成。

            NewTerm
Term
23001          9100
763003          402
51002         10608
581007          900
14001         42107
95000           900
92000          4002
62004         42107
224007         9100
...50k more


但是我想使用带有索引项的系列将这些值有效地重新放置在原始DataFrame中。到目前为止,我已经完成了以下代码

for i in range(data.shape[0]):
        data.loc[i, 'term'] = int(terms_indexed.ix[data.iloc[i][1]])


但是,执行此替换操作需要花费大量时间。配备8GB内存的Intel Core i7约需35分钟。我想知道是否有更好的方法来执行此操作。提前致谢

最佳答案

如果我了解您的情况正确,则可以执行df['term'] = df['term'].map(terms_indexed)。通过使用series1.map(series2)系列1的值作为系列2的索引来“翻译”系列1。

10-08 11:30