获取之前的值Pandas

时间:2016-05-25 07:45:51

标签: python python-2.7 pandas

我正在研究机器学习模型的特征提取,以及我需要将当前价格与之前价格进行比较的每一行。为此,我按照日期时间列对数据帧进行排序,遍历行并保留一个字典,其中产品ID为关键字,最后一个价格为值。我的数据集非常大,我的训练集和我的测试集中的销售额约为5米。即使是小样本(大约250k产品),也需要很长时间和大量内存。我在代码的其他部分使用了尽可能多的向量化函数,但我不知道如何使这部分更有效。这就是我现在正在做的事情:

data = data.sort_values('date_time')
previous_price = {}
data_list = []
for index, value in data.iterrows():
    if value['prop_id'] in previous_price.keys():
        data_list.append(value['price_usd']-previous_price[value['prop_id']])
    else:
        data_list.append(0)
    previous_price[value['prop_id']] = value['price_usd']
data['previous_price_diff'] = data_list

1 个答案:

答案 0 :(得分:2)

看起来你想要做的是根据ids获取先前减去的值,为此你可以使用groupby

data.groupby('prop_id')['price_usd'].diff()

所以这个组合在'prop_id'上并返回行间差异