





Здесь мало вещей:
df[column].apply(f) принимает функцию f в качестве аргумента и применяет эту функцию к каждому значению в column, возвращая новый столбец с измененными значениями.lambda x: x[2:] определяет функцию, которая принимает значение x и возвращает срез x[2:]. То есть, когда x является строкой, она возвращает x без первых двух символов.df['opposition'].apply(lambda x: x[2:]) возвращает столбец 'opposition', измененный путем удаления первых двух символов из всех строк в нем.Однако для этого конкретного случая использования есть гораздо лучший способ сделать это. Вы можете использовать .str.slice() для выполнения той же операции:
df['opposition'].str.slice(start=2)
Методы в .str специфичны для столбцов со строковыми значениями. См. здесь для получения дополнительной информации.
Сначала вы можете прочитать о лямба-функции отдельно, а затем о том, как она работает в списке.
Давайте возьмем пример, где мы должны добавить 1 к каждому значению, представленному в списке. Мы можем сделать это, повторяя каждое значение в цикле и явно вызывая функцию.
# Normal iteration method (Approach 1:)
def add_one_to_every_value(input):
return input + 1
my_list = [1, 2, 3, 4]
res_list = []
for i in my_list:
res_val = add_one_to_every_value(i)
res_list.append(res_val)
print(res_list)
# Approach 2: Using map and the function
res_list2 = list(map(add_one_to_every_value, my_list))
print(res_list2)
# Approach 3:
# The same operation using lambda function. Every value will be iterated
# and the corresponding operation (x+1) will be done.
res_list3 = list(map(lambda x: x+1, my_list))
print(res_list3)
Тот же подход используется в функции применения pandas.
# Removing first 2 characters in a string is done as follows
test_str = "abcdefg"
print(test_str[2:])
Итак, используя этот код удаления первых двух символов внутри лямбда, мы получаем
df['opposition'].apply(lambda x: x[2:])