Почему вы изменили функцию pandas apply() в pandas 1.1?

#python #pandas

#python #pandas

Вопрос:

Рассмотрим следующий пример,

 import pandas as pd
def test_func(row):
    row['c'] = str(row['a'])   str(row['b'])
    row['d'] = row['a']   1
    return row

df = pd.DataFrame({'a': [1,2,3], 'b': ['i','j', 'k']})
df.apply(test_func, axis=1)
  

Приведенный выше код, выполненный в pandas 1.1.0, возвращает:

    a  b   c  d
0  1  i  1i  2
1  1  i  1i  2
2  1  i  1i  2
  

В то время как в pandas 1.0.5 она возвращает:

    a   b    c  d
0  1   i   1i  2
1  2   j   2j  3
2  3   k   3k  4
  

Почему pandas изменил поведение функции apply() в двух версиях без обновления документации?

Комментарии:

1. Вы, должно быть, где-то перепутали, 1.1.0 выдает второй вывод в моей системе.

2. Это была ошибка, из-за которой первая строка / столбец оценивалась несколько раз, и она указана в разделе «Заметные исправления»: pandas.pydata.org/pandas-docs/stable/whatsnew /…

3. Протестировано в pandas 1.1.1 и работает хорошо, как и второй вывод.

Ответ №1:

В предыдущих версиях pd.apply() будет оцениваться первая строка / столбец более одного раза.

В версии v1.1.0 она оценивает первую строку / столбец только один раз.

Она указана здесь в документе Pandas: что нового v1.1.0

Комментарии:

1. Я снова проверил, моя версия pandas ‘1.1.0’, и это поведение все еще существует