Я хочу заменить предыдущее значение строки всякий раз, когда значение 0 найдено в столбце фрейма данных в python. Я использовал следующий код,Эффективный способ вызова предыдущей строки в python
if not a[j]:
a[j] = a[j-1]
, а также
if a[j]==0:
a[j]=a[j-1]
Обновление:
Полный код обновлен:
for i in pd.unique(r.a):
sub=r[r.vehicle_id==i]
sub=DataFrame(sub,columns= ['a','b','c','d','e'])
sub=sub.drop_duplicates(["a","b","c","d"])
sub['c']=pd.to_datetime(sub['c'],unit='s')
for j in range(1, len(sub[1:])):
if not sub.d[j]:
sub.d[j] = sub.d[j-1]
if not sub.e[j]:
sub.e[j]=sub.e[j-1]
sub=sub.drop_duplicates(["lash_angle","lash_check_count"])
Это запуск моего кода. строка sub.d [j] только откладывается
Эти оба, кажется, хорошо работают при использовании целочисленных значений. Один из столбцов содержит десятичные значения. При использовании кода для этого столбца для завершения инструкции требуется огромное количество времени (почти 15-20 секунд). Я прохожу через почти 10000 идентификаторов и трачу 15 секунд на этом этапе, делая весь мой код неэффективным. Есть ли лучший способ, я могу сделать это для значений с плавающей запятой (десятичной), чтобы было намного быстрее?
Благодаря
15s, чтобы проверить, является ли 'a [j] == 0'? Это звучит необоснованно ... –
Показать еще. Проблема не в этих строках. –
В любом случае тест должен быть, если abs (a [j])
paisanco