首页 > 解决方案 > 内存问题?如何有效地获得所需的输出?

问题描述

我有一个包含 1000 万行的数据框

识别速度

AB 34

AB 45

公元前60

公元前 32 年

公元前40

英孚 90

假设我想创建第三列 Acceleration,它在 ID 级别上采用 0(减速)或 1(加速)。

我总共有 2000 多个唯一 ID。

我试过这个

for id in df['ID'].unique() :
    df.loc[df['ID'] == id,'speed']
    df['acceleration'] = df['speed'].apply(accl)

我的accl函数如下

def accl(a):
   for i in range(1,len(a))    :
        if a[i] > a[i-1]:
            return 1
        else:
            return 0

运行循环后,我遇到了内存问题。

如何有效地解决这个问题?有什么技巧吗?如果这是解决方案,如何使用 Numpy 数组解决这个问题?

请记住:我需要 ID 级别的数据,因此 df['speed'] 上的连续 i+ 1 > i 将无法获取 Acceleration 列。

标签: python-3.xpandasnumpy

解决方案


推荐阅读