Nano Hash - криптовалюты, майнинг, программирование

Вывод функции применения в DataFrame

Рассмотрим следующий кадр данных:

Data=[[0,'ABC SCHOOL BOARDING',['ABC','SCHOOL','BOARDING']],
      [1,'UNIVERSITY BOARDING INSTITUTE',['UNIVERSITY','BOARDING','INSTITUTE']],
      [2,'MARIE INSTITUTE SCHOOL',['MARIE', 'INSTITUTE','SCHOOL']],
      [3,'RALPH ELEMENTARY SCHOOL',['RALPH','ELEMENTARY','SCHOOL']],
      [4,'BOARDING SCHOOL',['BOARDING','SCHOOL']]]

df=pd.DataFrame(Data, columns=['id','name', 'name_list'])

Я использую функцию применения, которая возвращает словарь для каждой строки:

def classify(row, df_start, df_end):
    #df = pd.DataFrame(columns=['word','classification'])
    d={}
    for word in row.name_list:
        flag=False
        if word in df_start.values:
            #df=df.append(pd.DataFrame({'word':[word], 'classification':['start']}))
            d[word]='start'
            flag=True
        if word in df_end.values:
            #df=df.append(pd.DataFrame({'word':[word], 'classification':['end']}))
            d[word]='end'
            flag=True
        if (not flag):
            #df=df.append(pd.DataFrame({'word':[word], 'classification':['none']}))
            d[word]='none'
    return d

Я вызываю вышеуказанную функцию, применяя ее к каждой строке:

df_start=pd.DataFrame(columns=['name'])
df_end=pd.DataFrame(columns=['name'])
df_start= df.name.str.split().str.get(0).drop_duplicates(keep="last")
df_end= df.name.str.split().str.get(-1).drop_duplicates(keep="last")

d={}

d = df.apply(classify, args=[df_start, df_end],axis=1)

for k, v in d.items():
    print(k)

Однако значения ключей в возвращенном словаре выводятся следующим образом:

0
1
2
3
4

В то время как значения для словаря следующие:

{'ABC': 'start', 'SCHOOL': 'end', 'BOARDING': 'end'}
{'UNIVERSITY': 'start', 'BOARDING': 'end', 'INSTITUTE': 'end'}
{'MARIE': 'start', 'INSTITUTE': 'end', 'SCHOOL': 'end'}
{'RALPH': 'start', 'ELEMENTARY': 'none', 'SCHOOL': 'end'}
{'BOARDING': 'end', 'SCHOOL': 'end'}

При печати в функции classify ключ и значение соответствуют ожидаемым. Эти ключи:

ABC
SCHOOL
BOARDING
UNIVERSITY
BOARDING
INSTITUTE
MARIE
INSTITUTE
SCHOOL
RALPH
ELEMENTARY
SCHOOL
BOARDING
SCHOOL

И эти значения:

start
end
end
start
end
end
start
end
end
start
none
end
end
end

Почему числа добавляются при возврате из функции применения? Как я могу преобразовать ожидаемый словарь в DataFrame?

Спасибо за ваш вклад :)


Ответы:


1

Функция применения в вашем случае вернет серию панд, а не словарь. Свяжитесь с type(d). Чтобы объединить значения d в один словарь, используйте следующий код:

da = {}
for r in d:
    da.update(r)

13.12.2019
  • Плохо, Return Type: Pandas Series after applied function/operation. я ожидал фрейм данных в качестве возврата. 13.12.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..