Как удалить первый символ n из всех ячеек в столбце с помощью python pandas?

df['opposition'].apply(lambda x: x[2:])

Пожалуйста, помогите мне понять лямбда-функцию и как она работает в этом случае.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
43
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Здесь мало вещей:

  • 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:])

Другие вопросы по теме