У меня продольные данные следующего видаСравнение строк и предыдущей строки при изменении в пандами dataframe
import pandas as pd
df = pd.DataFrame({
'a': ['apples', 'plums', 'pears', 'pears', 'pears'],
'b': ['grapes', 'grapes', 'grapes', 'grapes', 'bananas'],
'c': [0, 0, 1, 0, 1]
})
и функцию, которая сравнивает списки (подробности этого не важны)
def compare(old_fruit, new_fruit):
if set(new_fruit) - set(old_fruit) == {'pears'}:
return 1
else:
return 0
c
- 1, когда меняются изменения в a
и b
, которые меня интересуют. Я хочу найти строки, где c
= 1, захватить значения a
и b
в этот момент, плюс t he значения a
и b
из предыдущей строки, сравнить их с помощью моей функции и добавить новую серию в dataframe, показывающую результат сравнения.
Для приведенного выше примера, моя требуемая операция выполнения будет compare(['plums', 'grapes'], ['pears', 'grapes'])
и compare(['pears', 'grapes'], ['pears', 'bananas'])
и добавьте серии [0, 0, 1, 0, 0]
к dataframe, т.е. требуемый выход является dataframe следующим образом:
pd.DataFrame({
'a': ['apples', 'plums', 'pears', 'pears', 'pears'],
'b': ['grapes', 'grapes', 'grapes', 'grapes', 'bananas'],
'c': [0, 0, 1, 0, 1],
'd': [0, 0, 1, 0, 0]
})
Пожалуйста, добавьте пример выполнения и нужный результат. – ppasler
Привет. В этом случае желаемый результат представляет собой массив нулей и те же длины, что и dataframe, '[0, 0, 1, 0, 0]', который равен 1, где выполняется функция сравнения, и возвращает 1 и равна 0 в противном случае , Функция 'compare()' возвращает 1 и 0 соответственно для двух приведенных примеров. К сожалению, я не знаю, как написать пример для остальных. – user1684046
Я имею в виду код, который можно скопировать с вашего вопроса, поэтому я могу запустить его на своем компьютере (с фиктивными данными, импортом и желаемым выходом в качестве комментария). – ppasler