object has no attribute 'to_excel'
Задача:Пользователь вводит с клавиатуры данные в формате: english word:перевод 1, перевод 2. Потом преобразовывает и помещает в словарь, у которого ключом будет английское слова, а значениями- список[перевод1, перевод2,..переводN].
Предположим, после анализа данных вы хотите записать данные в новый файл excel. Как бы так, ручками работает:
df = pd.DataFrame({'Idiom': ['A blessing in disguise', 'A dime a dozen', 'Beat around the bush', 'Better late than never'],
'Meaning': ['a good thing that seemed bad at first', 'Something common', 'Avoid saying what you mean','Better to arrive late than not to come at all'],
})
Но вот коды выдают ошибку в первом:
list object has no attribute 'to_excel'
Во втором
'dict' object has no attribute 'to_excel'
Код 1
import pandas as pd
import xlsxwriter
my_dict = {}
m = int(input("Задайте количество слов в вашем словаре: "))
print("""\nВведите английское слово(фразу) в формате:
слово: перевод1, перевод2, …, перевод N\n""")
while len(my_dict) < m:
inp = input("слово: ").split(":")
myData = my_dict[inp[0].strip()] = inp[1].replace(",", " ").split()
writer = pd.ExcelWriter('example.xlsx', engine='xlsxwriter')
myData.to_excel(writer, 'Sheet1')
writer.save()
Код 2
import pandas as pd
# import xlsxwriter
input = input('введите так: английское слово: перевод1, перевод2, перевод3: ')
myData = dict([[input.split(':')[0], input.split(':')[1:]]])
writer = pd.ExcelWriter('example.xlsx', engine='xlsxwriter')
myData.to_excel(writer, 'Sheet1')
writer.save()
код рабочий, еще осталось транслятор привентить: Код 3
import pandas as pd
lst = [] # Создаем пустой список
while True: # Цикл
npt = [i for i in input('Введите данные: ').split()] #Через пробел вводим данные, выход из цикла - пустая строка
if npt == []:
break
else: #Записываем в наш список данные, english, translation
lst.append({
'English': npt[0:3],
'Translation': [ i for i in npt[-3:]] # вводим 6 имен животных
})
print(type(lst))
df = pd.DataFrame.from_dict(lst)
#df = pd.DataFrame(lst).transpose()
writer = pd.ExcelWriter('Python_Translator.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
workbook = writer.book
worksheet = writer.sheets['Sheet1']
format1 = workbook.add_format({'num_format': '#,##0.00'})
format2 = workbook.add_format({'num_format': '0%'})
worksheet.set_column('B:B', 80, format1)
worksheet.set_column('C:C', 35, format1)
worksheet.conditional_format('B2:B8', {'type': '3_color_scale'})
writer.save()
Ответы (1 шт):
Автор решения: Andrey
→ Ссылка
Что касается преобразования словаря в DataFrame :
data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
print(type(data))
res = pd.DataFrame.from_dict(data)
print(res)
print(type(res))
Вывод :
<class 'dict'>
col_1 col_2
0 3 a
1 2 b
2 1 c
3 0 d
<class 'pandas.core.frame.DataFrame'>
Что касается преобразования списка в DataFrame :
lst = [['Jon','Mark','Maria','Jill','Jack'],['Smith','Brown','Lee','Jones','Ford'],[21,38,42,28,55]]
print(type(lst))
df = pd.DataFrame(lst).transpose()
df.columns = ['First_Name','Last_Name','Age']
print(df)
print(type(df))
Вывод :
<class 'list'>
First_Name Last_Name Age
0 Jon Smith 21
1 Mark Brown 38
2 Maria Lee 42
3 Jill Jones 28
4 Jack Ford 55
<class 'pandas.core.frame.DataFrame'>