Wpis z mikrobloga

Cześć, pomoże ktoś z błędem w kodzie?
Jestem mocno początkujący ale potrzebuje na szybkości wrzucić do danych Excel wyniki które wpisuje do intputu(domyślnie będę wygrywał listę z Excela i przez nią zrobię for)

#python #programowanie

Kod:
import pandas as pd
import os

# Dane spotkania
spotkania = ['Arsenal', 'Wolves', input()]
team1 = spotkania[0]
team2 = spotkania[1]
wynik = spotkania[2]

# Ścieżka do folderu z plikami Excel
sciezkadofolderu = r"C\Python\Ćwiczenia\zespoły"
team1excel = f"{team1}.xlsx"
team2
excel = f"{team2}.xlsx"

# Ścieżki do plików Excel dla obu zespołów
sciezkadoplikuexcelteam1 = os.path.join(sciezkadofolderu, team1excel)
sciezka
doplikuexcelteam2 = os.path.join(sciezkadofolderu, team2excel)

# Określ nazwy arkuszy
Win = "Win"
Lost = "Lost"
Draw = "Draw"

# Wczytaj dane z plików Excel do DataFrame i przypisz do zmiennych team1Win itp
vars()[f'{team1}Win'] = pd.readexcel(sciezkadoplikuexcelteam1, sheetname=Win)
vars()[f'{team1}Lost'] = pd.readexcel(sciezkadoplikuexcelteam1, sheetname=Lost)
vars()[f'{team1}Draw'] = pd.readexcel(sciezkadoplikuexcelteam1, sheetname=Draw)

vars()[f'{team2}Win'] = pd.readexcel(sciezkadoplikuexcelteam2, sheetname=Win)
vars()[f'{team2}Lost'] = pd.readexcel(sciezkadoplikuexcelteam2, sheetname=Lost)
vars()[f'{team2}Draw'] = pd.readexcel(sciezkadoplikuexcelteam2, sheetname=Draw)

# Pętla
if wynik == "remis":
vars()[f'{team1}Draw'] = vars()[f'{team1}Draw'].append(pd.DataFrame({'Opponent': [team2]}), ignoreindex=True)
vars()[f'{team2}Draw'] = vars()[f'{team2}Draw'].append(pd.DataFrame({'Opponent': [team1]}), ignore
index=True)
else:
if team1 == wynik:
vars()[f'{team1}Win'] = vars()[f'{team1}Win'].append(pd.DataFrame({'Opponent': [team2]}), ignoreindex=True)
vars()[f'{team2}Lost'] = vars()[f'{team2}Lost'].append(pd.DataFrame({'Opponent': [team1]}), ignore
index=True)
elif team2 == wynik:

vars()[f'{team2}Win'] = vars()[f'{team2}Win'].append(pd.DataFrame({'Opponent': [team1]}), ignoreindex=True)
vars()[f'{team1}Lost'] = vars()[f'{team1}Lost'].append(pd.DataFrame({'Opponent': [team2]}), ignore
index=True)
else:
print('---------')
print("Błąd")
print('---------')

# Zapisz zmienione DataFrame'y do plików Excel
vars()[f'{team1}Win'].toexcel(sciezkadoplikuexcelteam1, sheetname=Win, index=False)
vars()[f'{team1}Lost'].toexcel(sciezkadoplikuexcelteam1, sheetname=Lost, index=False)
vars()[f'{team1}Draw'].toexcel(sciezkadoplikuexcelteam1, sheetname=Draw, index=False)

vars()[f'{team2}Win'].toexcel(sciezkadoplikuexcelteam2, sheetname=Win, index=False)
vars()[f'{team2}Lost'].toexcel(sciezkadoplikuexcelteam2, sheetname=Lost, index=False)
vars()[f'{team2}Draw'].toexcel(sciezkadoplikuexcelteam2, sheetname=Draw, index=False)

# Wyświetl zmodyfikowane DataFrame'y
print("")
print("")
print(team1)

print("WIN", vars()[f'{team1}Win'])
print("LOST", vars()[f'{team1}Lost'])
print("DRAW", vars()[f'{team1}Draw'])

print(team2)

print("WIN", vars()[f'{team2}Win'])
print("LOST", vars()[f'{team2}Lost'])
print("DRAW", vars()[f'{team2}Draw'])

Wywala mi taki błąd:

AttributeError: 'DataFrame' object has no attribute 'append'. Did you mean: '_append'?

Process finished with exit code 1
  • 4
Błąd, który otrzymujesz, wynika z próby użycia metody .append() na obiekcie DataFrame, który jest niemutowalny. W związku z tym, jeśli chcesz dodać wiersze do DataFrame'u, musisz użyć metody .concat() lub .append() w kontekście tworzenia nowego DataFrame'u.

Możesz poprawić ten błąd, zmieniając sposób dodawania wierszy do DataFrame'ów. Oto kilka sugerowanych zmian:

Zamiast:

vars()[f'{team1}Win'] = vars()[f'{team1}Win'].append(pd.DataFrame({'Opponent': [team2]}), ignoreindex=True)
vars()[f'{team2}Win'] = vars()[f'{team2}Win'].append(pd.DataFrame({'Opponent': [team1]}), ignoreindex=True)

Możesz użyć:

vars()[f'{team1}Win'] = pd.concat([vars()[f'{team1}Win'], pd.DataFrame({'Opponent': [team2]})], ignore_index=True)
vars()[f'{team2}Win'] = pd.concat([vars()[f'{team2}Win'],