我有一个大的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。