Я обнаружил странное поведение в Python Pandas и хотел спросить, виновата ли я в этом или это настоящая ошибка программы. Возьмем следующий DataFrame:
data = DataFrame({'k2':[1, 2, 3, ], 'name':['joe', 'mark', 'carl']})
data.set_index('name', drop=False, inplace=True)
Если я создам функцию, которая возвращает объект серии, подобный этому
def my_test(i, x):
x['interrel'] = x.apply(lambda row: i['k2'] - row['k2'] if i['name'] != row['name'] else 0, axis=1)
print x['interrel']
return x['interrel']
и примените эту функцию, используя применить к созданному DataFrame, используя
data.apply(lambda row: my_test(row, data), axis=1)
все, что я получаю на выходе, - это последняя вычисленная строка, умноженная на три. Однако оператор печати в функции my_test показывает, что вычисления верны. Кажется, что только объекты определенной серии добавлены неправильно.
Можете ли вы восстановить эту проблему? Я что-то не понял относительно использования функции применения?
Учтите, что это всего лишь пример, я не прошу другого способа сделать попарные различия в Pandas.
Любая помощь приветствуется