как выполнять построчную операцию в пандах [дубликаты]

1

У меня есть dataframe с двумя столбцами, last_name и description

Каков элегантный способ увидеть, содержит ли description last_name в каждой строке?

У меня есть уродливый


for i in range(0,len(df0)):
    df0['last_name_position'].loc[i] = \ 
        df0['description'].loc[i].find(df0['last_name'].loc[i])

Бег.

Это в основном та же задача, что и https://exceljet.net/formula/cell-contains-specific-text

Теги:
string
pandas
dataframe

3 ответа

3

Тот же результат может быть достигнут с помощью df.apply:

df0['last_name_position'] = \ 
    df0.apply(lambda x: x.description.find(x.last_name), axis=1)

Если вам не нужно найти индекс подстроки:

df0['last_name_position'] = \ 
    df0.apply(lambda x: x.last_name in x.description, axis=1)
  • 0
    Спасибо за ваш быстрый ответ!
0

Сохранение данных:

import pandas as pd 

a = pd.DataFrame([['Smith','Some description'],['Jones','Some Jones description']], columns=['last_name','description'])
a['Match']=a.apply(lambda x: x['last_name'] in x['description'], axis=1)
a.head()

last_name   description             Match
0   Smith   Some description        False
1   Jones   Some Jones description  True
  • 0
    Спасибо за ваш быстрый ответ!
0

Что может быть лучше, это перебрать строки, используя индекс. Затем сделайте ваше сравнение, используя in ключевом слове:

import pandas as pd 

a = pd.DataFrame([['Smith','Some description'],['Jones','Some Jones description']], columns=['last_name','description'])

for rname in a.index:
    row = a.loc[rname]

    it_contains = row['last_name'] in row['description']
    print "Description contains last name:", it_contains

# Outputs:
# Description contains last name: False
# Description contains last name: True
  • 0
    Я бы сказал, что это анти-панды. Для простых сравнений нет необходимости перебирать индекс Панды. Существуют методы, pd.DataFrame.apply и pd.Series.apply , которые делают это избыточным.
  • 0
    Как бы вы сделали это вместо этого? Я думаю, используя функцию DataFrame.apply () панды? Я поднял его около месяца назад, поэтому я приветствую больше предложений Panda-Nic
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню