fartuk
Фев. 8, 2017 20:00:25
Здравствуйте! Имеется таблица pandas с колонкой col, в которой записаны либо 0, либо 1. Нужно для каждой строки посчитать, сколько подряд идущих 1 в предыдущих строках. Например, если col было 0 0 1 1 1 0 1, то ответ должен быть 0 0 0 1 2 3 0. Помогите, пожалуйста, написать это, используя какие-либо встроенные функции, а то если писать влоб, используя цикл, то неприемлимо долго получается. Заранее спасибо.
FishHook
Фев. 9, 2017 04:51:03
Если я правильно понял задачу (а понять вас непросто) то как-то так
from functools import reduce
s = "0011101"
print(reduce(lambda x, y: x + str(y if y != "1" else int(x[-1]) + int(y)),s))
fartuk
Фев. 9, 2017 08:52:33
FishHook
Если я правильно понял задачу (а понять вас непросто) то как-то так
У меня не строка, а таблица с одной колонкой. В этой колонке в каждой строке содержится число: либо 0, либо 1. И теперь, если бы я делал циклом, то это выглядело бы примерно так: спускаюсь вниз по таблице и считаю число подряд идущих единиц и записываю результат в следующую строку. Если встретился 0, то счетчик обнуляется. Может побольше пример привести, если еще непонятно?
FishHook
Фев. 9, 2017 08:59:33
fartuk
У меня не строка, а таблица с одной колонкой.
Ну и что? Переделайте алгоритм на ту конструкцию, которая конкретно у вас используется. Я вам дал направление решения, ваша задача это решение адаптировать под свою конкретику.
fartuk
Может побольше пример привести, если еще непонятно?
fartuk
У меня не строка, а таблица
показывайте свою таблицу