Я знаю, что аналогичные версии этого вопроса были заданы, и я видел ответы no, или смотрю на roll_apply, но до сих пор не видел, как я могу реализовать более быструю версию этого кода, хотя кажется, что это должно быть возможным.Может ли DataFrame.apply ссылаться на предыдущие строки?
В кадре данных я хочу создать столбец, значения которого либо равны другому столбцу, либо равны его предыдущему значению (ранняя строка) в зависимости от второго столбца. Я могу сделать это в цикле, но он медленный.
import pandas as pd
df = pd.DataFrame({'a':[0,1,2,0,1,2,0,1,2],'t':[0,1,2,3,4,5,6,7,8]})
startTime = df.loc[0,'t']
df.loc[:,'startTime'] = startTime
for idx in range(df.shape[0]):
if df.loc[idx,'a'] == 0:
startTime = df.loc[idx,'t']
df.loc[idx,'startTime'] = startTime
df
Слишком быстро для меня +1 – piRSquared
Отлично! Это хорошо работает для меня, используя этот код для моего фактического кода, а не для демонстрации, я нашел одну рекомендацию, чтобы сделать это более общим для переиндексации в df.index. Спасибо –
@PaulFleming Ах да, это была ошибка, с которой только что случилось, потому что 'df ['t']' и 'df.index' одинаковы. Я думал, что передал индекс 'df ['t']'. Отредактировано сейчас, спасибо. – ayhan