#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’, и это поведение все еще существует