Python - Pandas - Импорт файла Excel, итерация по каждой строке, добавление нового значения и добавление в фрейм данных - PullRequest
0 голосов
/ 08 июня 2019

У меня есть файл Excel с кодом проекта и полями аннотации, которые мне нужно импортировать, чтобы я мог запустить простой текстовый сумматор на аннотации и затем добавить его в кадр данных.

Мой набор данных Excel выглядит следующим образом:

[Proj_Number] | [Abstract]

JJF-123          | Diabetes is a serious chronic condition.  
JFR-223          | Cardiovascular disease is also a chronic condition. 
JF3-334          | Don't forget about asthma and how much it sucks. 

после того, как я импортирую данные, я хочу применить мой текстовый сумматор и получить это:

[Proj_Number] | [Abstract]                        [Ab_keywords]

JJF-123       | Diabetes is a chronic condition.  |Diabetes, chronic condition                                                                 
JFR-223       | COPD is a also chronic condition. | COPD, chronic condition
JF3-334       | Don't forget about asthma too.    | asthma, forgot

Я знаюмой код неверен, но я просто не знаю, как перебрать каждую строку, получить абстрактные ключевые слова из аннотации, добавить их в кадр данных и экспортировать.

from gensim.summarization.summarizer import summarize
from gensim.summarization import keywords
import pandas as pd

dataset = pd.read_excel('abstracts.xlsx',encoding="ISO-8859-1")
df = pd.DataFrame(dataset)
cols = [1,2]
df = df[df.columns[cols]]

for d in df:
d =  keywords(d, ratio=0.15, split=True))
print(d)

1 Ответ

1 голос
/ 08 июня 2019

Вы не хотите перебирать каждую строку в df с for d in df:

У Pandas есть способ применить функцию к каждой строке кадра данных и вернуть серию с помощью функции apply

Если вы соответствующим образом переименуете столбцы вашего информационного кадра,

df['Ab_keywords'] = df['Abstract'].apply(lambda text: keywords(text, ratio=0.15, split=True))

должно работать.

Здесь лямбда-функция применяется к каждой строке df['Abstract'] и получает значение каждой строки в качестве аргумента.

...