У меня есть фрейм данных, полный научной научной статьи.
Мой фрейм данных :
database authors title
0 sciencedirect [{'surname': 'Sharafaldin', 'first_name': 'Iman'}, An eval...
{'surname': 'Lashkari', 'first_name': 'Arash Habibi'}]
1 sciencedirect [{'surname': 'Srinivas', 'first_name': 'Jangirala'}, Governmen...
{'surname': 'Das', 'first_name': 'Ashok Kumar'}]
2 sciencedirect [{'surname': 'Bongiovanni', 'first_name': 'Ivano'}] The last...
3 ieeexplore [Igor Kotenko, Andrey Chechulin] Cyber Attac...
Как видите, столбец авторов содержит список словарей. , но только , где база данных sciencedirect
. Для того, чтобы выполнить некоторый анализ, мне нужно очистить свои данные. Поэтому моя цель - поместить имена просто в списки, как в строке 4.
Что я хочу :
# From:
[{'surname': 'Sharafaldin', 'first_name': 'Iman'}, {'surname': 'Lashkari', 'first_name': 'Arash Habibi'}]
# To:
[Iman Sharafaldin, Arash Habibi Lashkari]
Мое приближение это создать две маски, одну для столбца базы данных, извлекая только sciencedirect
бумаги, а другую маску составляет весь столбец authors
. Из этой маски создается новый фрейм данных, в столбце «авторы» которого я запускаю код, показанный ниже. Он извлекает имена авторов каждой ячейки и сохраняет их в списке, так, как я хочу:
scidir_mask = df["database"] == 'sciencedirect'
authors_col = df["authors"] is not None
only_scidir = df[authors_col & scidir_mask]
for cell in only_scidir["authors"]:
# get each list from cell
cell_list = []
for dictionary in cell:
# get the values from dict and reverse into list
name_as_list = [*dictionary.values()][::-1]
# make list from first and surname a string
author = ' '.join(name_as_list)
cell_list.append(author)
Так что в конце кода выше, cell_list
содержит имена авторов в путиЯ хочу. Но я не могу разобраться, как сохранить эти cell_lists
обратно в исходный фрейм данных.
Итак, как мне получить ячейку авторов, где база данных sciencedirect
выполнить мою маленькую функцию и сохранить результат моей функции обратно в ячейку?