Доброго времени сток. Подскажите пожалуйста как из Excel с помощью Python и библиотеки Pandas взять некоторые столбцы разбить их на Фамилию первую букву имени и отчества. Так что бы они были каждая в своей строке.
Вообще мне необходимо сравнить два файла, а для этого необходимо как я считаю привезти их к общему шаблону. Возможно я не прав, но метод такой работает в Excel. Да и всё бы хорошо но приходиться по 10-15 раз делать это действие.
На данном этапе я пытаюсь преобразовать один файл должно получиться в идеале так
На данный момент всё что я имею это
исходный файл выглядит так
Да и по самому коду есть некоторые вопросы. Я совсем не понимаю строчку 14 а именно почему после .str когда я ставлю . replace не подсвечивается в подсказках при нажатии ctrl+пробел. Будто его нет, но он работает.
import pandas as pd
# Опция отвечающая за вывод всех колонок в консоли
pd.set_option('display.expand_frame_repr', False)
# Указываем место расположения файла
pathFileOpen = r"E:\Learn_Python\tmp\Cписок август.xlsx"
pathFileSave = r"E:\Learn_Python\tmp\Список август (автоматический вариант).xlsx"
# Читаем данные из файлов с помощью панды
wb = pd.read_excel(pathFileOpen, sheet_name='Количество', header=5, usecols="A:D, G, H")
# Разбиваем на отдельные колонки ФИО
new_concatFrame = wb['ФИО клиента'].str.split(' ', expand=True)
# Называем вновь созданные колонки
new_concatFrame.columns = ['Фамилия', 'Имя', 'Отчество', 'Удалить']
# Присваиваем переменной DataFrame переменные wb и new_concatFrame для последующей склейки
DataFrame = [wb, new_concatFrame]
# Склеиваем двае переменные методом concat. Параметр axis=1 говорит о том что необходимо добавить столбцы с созданными именами
concatFrame = pd.concat(DataFrame, axis=1)
keysFilter = ['ВИП. 18-39 лет женщины',
'ВИП. 18-39 лет мужчины',
'ВИП. 40-62 года мужчины',
'ВИП. 40-64 года женщины',
'ВИП. 41-63 года женщины',
'ВИП. 41-63 года мужчины',
'ВИП. 45,55 лет мужчины',
'ВИП. 50,60,64 года мужчины',
'ВИП. 65-75 лет женщины',
'ВИП. 65-75 лет мужчины',
'ВИП. 66-74 лет женщины',
'ВИП. 76 лет и > женщины',
'ВИП. 76 лет и > мужчины']
# Фильтруем строки по заданным ключам
concatFrame = concatFrame.loc[concatFrame['Специальность / Тестирование'].isin(keysFilter)]
# Выбираем необходимые колонки для копирования
concatFrame = concatFrame[['Номер', 'ФИО клиента', 'Дата рождения']]
# for i in concatFrame:
# print(concatFrame[i][:1])
# Уюираем значок № из файла
for column in concatFrame.columns:
concatFrame[column] = concatFrame[column].str.replace('№', '')
concatFrame.to_excel(pathFileSave, sheet_name='Общий список', index=False, )
print(concatFrame)
# не работает (((
# writer = pd.ExcelWriter(pathFileSave, engine='xlsxwriter')
# concatFrame.to_Excel(writer, sheet_name='Общий список')
# writer.save()
print(type(concatFrame))
print(isinstance(concatFrame, list))
# list1 = []
# for i in fioRedact['Фамилия']:
# for cell in i:
# list1.append(cell.value)
#
# # Сохраняем полученный файл
# finalDF.to_excel(pathFileSave, sheet_name='Общий список', index=False, columns=['Полис', 'Дата рождения', 'Фамилия', 'Имя', 'Отчество'])
# writer = pd.ExcelWriter(pathFileSave)
# finalDF.to_Excel(writer, sheet_name='Общий список')
Если кто то может немного подсказать и направить в нужное русло огромное спасибо
Ссылка на файл
Download Cписок август.xlsx - Фотохостинг и file cloud