如何有效替换pandas DataFrame上的值?

时间:2014-09-03 21:05:35

标签: python pandas indexing

我有一个名为 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内存。我想知道是否有更好的方法来执行此操作。提前致谢

1 个答案:

答案 0 :(得分:4)

如果我理解你的情况,你可以df['term'] = df['term'].map(terms_indexed)。做series1.map(series2)"翻译" series1使用其值作为series2的索引。