我有一个名为 data 的大型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
但我希望使用带有索引术语的Series有效地重新填充原始DataFrame中的这些值。到目前为止,我已经使用以下行
完成了它for i in range(data.shape[0]):
data.loc[i, 'term'] = int(terms_indexed.ix[data.iloc[i][1]])
然而,这项更换操作需要花费很多时间。英特尔酷睿i7大约35分钟,8GB内存。我想知道是否有更好的方法来执行此操作。提前致谢
答案 0 :(得分:4)
如果我理解你的情况,你可以df['term'] = df['term'].map(terms_indexed)
。做series1.map(series2)
"翻译" series1使用其值作为series2的索引。