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