Ahmed Ahmed64 نشر 1 يناير أرسل تقرير نشر 1 يناير السلام عليكم استخدمت لدمج DataFrame من خلال هذا الكود حيث كل DataFrame تأتي تحت الأخرى self.Table=pd.concat([a1,a2,a3],axis=0) لاكن واجهة هذا الخطأ pandas.errors.InvalidIndexError: Reindexing only valid with uniquely valued Index objects كيف ممكن معالجة هذه المشكلة اقتباس
0 Khaled Osama3 نشر 2 يناير أرسل تقرير نشر 2 يناير بتاريخ 16 ساعة قال Ahmed Ahmed64: حيث كل DataFrame تأتي تحت الأخرى self.Table=pd.concat([a1,a2,a3],axis=0) لاكن واجهة هذا الخطأ pandas.errors.InvalidIndexError: Reindexing only valid with uniquely valued Index objects كيف ممكن معالجة هذه المشكل وعليكم السلام الخطأ هنا يقول أن إطارات البيانات التي تم توحيدها (a1, a2, a3) لديها مؤشرات مكررة. فيجب تعيين الفهرس مجددًا بشكل فريد لكل إطار بيانات قبل الدمج: a1 = a1.reset_index(drop=True) a2 = a2.reset_index(drop=True) a3 = a3.reset_index(drop=True) self.Table = pd.concat([a1, a2, a3], axis=0) يجب استخدام `ignore_index=True` أثناء عملية الدمج: باستخدام ignore_index=True سيقوم pandas بإعادة تعيين الأرقام بشكل متلاحق دون تكرار، حتى لو كانت مكررة في الأصل. فهذا سيؤدي لدمج البيانات بشكل صحيح دون أخطاء. self.Table = pd.concat([a1, a2, a3], axis=0, ignore_index=True) تأكد من أن المؤشرات فريدة لكل إطار بيانات قبل الدمج لتجنب هذه المشكلة. 1 اقتباس
0 Ahmed Ahmed64 نشر 2 يناير الكاتب أرسل تقرير نشر 2 يناير بتاريخ 1 ساعة قال Khaled Osama3: وعليكم السلام الخطأ هنا يقول أن إطارات البيانات التي تم توحيدها (a1, a2, a3) لديها مؤشرات مكررة. فيجب تعيين الفهرس مجددًا بشكل فريد لكل إطار بيانات قبل الدمج: a1 = a1.reset_index(drop=True) a2 = a2.reset_index(drop=True) a3 = a3.reset_index(drop=True) self.Table = pd.concat([a1, a2, a3], axis=0) يجب استخدام `ignore_index=True` أثناء عملية الدمج: باستخدام ignore_index=True سيقوم pandas بإعادة تعيين الأرقام بشكل متلاحق دون تكرار، حتى لو كانت مكررة في الأصل. فهذا سيؤدي لدمج البيانات بشكل صحيح دون أخطاء. self.Table = pd.concat([a1, a2, a3], axis=0, ignore_index=True) تأكد من أن المؤشرات فريدة لكل إطار بيانات قبل الدمج لتجنب هذه المشكلة. عفواً أخي هل لك أن توضح لي التعديل على هذا الكود import customtkinter import tkinter as tk from tkinter import filedialog, messagebox, ttk import pandas as pd from pathlib import Path class App(customtkinter.CTk): def __init__(self): super().__init__() self.title("App-v1") self.grid_columnconfigure(0, weight = 1) self.grid_rowconfigure(1, weight = 1) customtkinter.set_appearance_mode("dark") customtkinter.set_default_color_theme("green") Menu(self) def File_dialog(self): self.filename = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main", title="Open file okay?", filetypes=(("text files", "*.xlsx"),("all files", "*.*"))) self.label_file["text"] = self.filename return None def Load_excel_data(self): file_path = self.label_file["text"] try: excel_filename = r"{}".format(file_path) if excel_filename[-4:] == ".csv": df = pd.read_csv(excel_filename) else: df = pd.ExcelFile(excel_filename) self.optionmenu1.configure(values = df.sheet_names) self.qq = df.sheet_names self.label2["text"] = df.sheet_names except ValueError: tk.messagebox.showerror("Information", "The file you have chosen is invalid") return None except FileNotFoundError: tk.messagebox.showerror("Information", f"إختر ملف أولاً {file_path}") return None def optionmenu_callback(self,choice): self.label2.configure(text=choice) def lod_Frame(self,cl3,cl4,cl5,cl6,xa,xb): df = pd.read_excel(self.filename,sheet_name=self.label2["text"],header=None) selected_column_1 = df.iloc[8::2, [0,1,2,cl3,cl4,cl5,cl6]] selected_column_1.reset_index(drop=True) selected_column_2 = df.iloc[9::2, [2,cl3,cl4,cl5,cl6]] selected_column_2.reset_index(drop=True, inplace=True) A = pd.DataFrame(selected_column_1) B = pd.DataFrame(selected_column_2) self.Table=pd.concat([A,B],axis=1) repeated_values1 = [] repeated_values2 = [] for i in range(len(self.Table)): repeated_values1.append(df.iloc[xa,xb]) repeated_values2.append(df.iloc[3,4]) self.Table['إسم المادة'] = repeated_values1 self.Table['العام الدراسي'] = repeated_values2 self.Table.fillna(0, inplace=True) self.Table['1أكبر_قيمة'] = self.Table.iloc[:, [5,6]].max(axis=1) self.Table['2أكبر_قيمة'] = self.Table.iloc[:, [10,11]].max(axis=1).apply(lambda x: 50 if x > 50 else x) self.Table['3أكبر_قيمة'] = self.Table.apply(lambda row: row.iloc[14] if row.iloc[15] == 0 else row.iloc[15] if 0 < row.iloc[15] <= 50 else None, axis=1) return self.Table def lod_data(self): App() a1= self.lod_Frame(3,4,5,6,6,3) a1 = a1.reset_index(drop=True) a2= self.lod_Frame(7,8,9,10,6,7) a2 = a2.reset_index(drop=True) a3= self.lod_Frame(11,12,13,14,6,11) a3 = a3.reset_index(drop=True) a4= self.lod_Frame(15,16,17,18,6,15) a4 = a4.reset_index(drop=True) a5= self.lod_Frame(19,20,21,22,6,19) a5 = a5.reset_index(drop=True) a6= self.lod_Frame(23,24,25,26,6,23) a6 = a6.reset_index(drop=True) a7= self.lod_Frame(27,28,29,30,6,27) a7 = a7.reset_index(drop=True) a8= self.lod_Frame(31,32,33,34,6,31) a8 = a8.reset_index(drop=True) a9= self.lod_Frame(35,36,37,38,6,35) a9 = a9.reset_index(drop=True) a10= self.lod_Frame(39,40,41,42,6,39) a10 = a10.reset_index(drop=True) a11= self.lod_Frame(43,44,45,46,6,43) a11 = a11.reset_index(drop=True) a12= self.lod_Frame(47,48,49,50,6,47) a12 = a12.reset_index(drop=True) a13= self.lod_Frame(51,52,53,54,6,51) a13 = a13.reset_index(drop=True) a14= self.lod_Frame(55,56,57,58,6,55) a14 = a14.reset_index(drop=True) a15= self.lod_Frame(59,60,61,62,6,59) a15 = a15.reset_index(drop=True) #self.Table = self.Table.reset_index() rtb=pd.concat([a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15],axis=0, ignore_index=True) # self.Table.to_excel("ALL2025.xlsx",sheet_name=self.label2["text"]) with pd.ExcelWriter('ALL2030.xlsx',if_sheet_exists="overlay",mode='a') as writer: rtb.to_excel(writer, sheet_name=self.label2["text"],header=None,index=False) class Menu(customtkinter.CTkFrame,App): def __init__(self, master): super().__init__(master) self.grid(row=0, column=0, padx=(10, 10), pady=(10, 10), sticky="ew") self.columnconfigure(0, weight = 1) self.rowconfigure(1, weight = 1) self.configure(border_width=1,border_color="#0087f2") self.create_widgets() def create_widgets(self): self.button1 = customtkinter.CTkButton(self, text = 'File_dialog',command=self.File_dialog) self.button1.grid(row = 0, column = 3, padx=(10, 10), pady=(10, 10), sticky="e") self.label_file = ttk.Label(self, text="") self.label_file.grid(row = 0, column = 0, padx=(10, 10), pady=(10, 10), sticky="e") self.button2 = customtkinter.CTkButton(self, text = 'Load_excel',command=self.Load_excel_data) self.button2.grid(row = 0, column = 2, padx=(10, 10), pady=(10, 10), sticky="e") self.label2 = ttk.Label(self, text="") self.label2.grid(row = 1, column = 0, padx=(10, 10), pady=(10, 10), sticky="e") self.optionmenu1 = customtkinter.CTkOptionMenu(self,values=["إختر ورقة العمل"], font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold")) self.optionmenu1.grid(row=0, column=1, padx=(10, 10), pady=(10, 10), sticky="e") self.optionmenu1.configure(command=self.optionmenu_callback) self.button3 = customtkinter.CTkButton(self, text = 'RUN',command=self.lod_data) self.button3.grid(row = 1, column = 3, padx=(10, 10), pady=(10, 10), sticky="e") app = App() app.mainloop() 1 اقتباس
0 Khaled Osama3 نشر 2 يناير أرسل تقرير نشر 2 يناير بتاريخ 42 دقائق مضت قال Ahmed Ahmed64: عفواً أخي هل لك أن توضح لي التعديل على هذا الكود يبدو انك تضع في الكود بتاريخ 2 ساعة قال Khaled Osama3: self.Table = pd.concat([a1, a2, a3], axis=0, ignore_index=True) فهل يواجهك نفس الخطأ المسبق ام خطأ اخر ؟ 1 اقتباس
0 Ahmed Ahmed64 نشر 2 يناير الكاتب أرسل تقرير نشر 2 يناير بتاريخ 22 دقائق مضت قال Khaled Osama3: يبدو انك تضع في الكود فهل يواجهك نفس الخطأ المسبق ام خطأ اخر ؟ نفس الخطأ اقتباس
0 Khaled Osama3 نشر 2 يناير أرسل تقرير نشر 2 يناير بتاريخ 17 دقائق مضت قال Ahmed Ahmed64: نفس الخطأ لا داعي لإنشاء متغيرات A و B، بما أننا سنقوم بدمج selected_column_1 و selected_column_2 مباشرة, يفضل إعادة تعيين الفهرس مرة واحدة بعد الدمج لتجنب أي مشاكل. selected_column_1 = df.iloc[8::2, [0,1,2,cl3,cl4,cl5,cl6]] selected_column_2 = df.iloc[9::2, [2,cl3,cl4,cl5,cl6]] self.Table = pd.concat([selected_column_1, selected_column_2], axis=1, ignore_index=True) self.Table.reset_index(drop=True, inplace=True) 1 اقتباس
السؤال
Ahmed Ahmed64
السلام عليكم
استخدمت لدمج DataFrame من خلال هذا الكود
حيث كل DataFrame تأتي تحت الأخرى
لاكن واجهة هذا الخطأ
pandas.errors.InvalidIndexError: Reindexing only valid with uniquely valued Index objects
كيف ممكن معالجة هذه المشكلة
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.