Я понимаю, что метод apply вызывается даже для пустого фрейма данных.Когда есть ошибка внутри метода apply, она не распространяется.Я смотрел на эту ссылку на стек, которая предлагает использовать опцию reduce
, чтобы функция apply не вызывалась. Панды: почему DataFrame.apply (f, axis = 1) вызывает f, когда DataFrame пуст?
Рассмотрим этот пример, в Col1, все меньше 10. Итак, датафреймпустой.Когда я использую опцию Reduce, тип данных col2 изменяется.Он преобразует числа в десятичные числа.
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
mask = df["col1"] > 10
df.loc[mask, "col2"] = df[mask].apply(lambda x: x+2, axis=1, result_type='reduce')
print(df)
Ожидаемый результат
col1 col2
0 1 3
1 2 4
Фактический результат:
col1 col2
0 1 3.0
1 2 4.0
Я не уверен, почему он преобразует целые числа в десятичные,Кто-нибудь знает, как этого избежать?