Ahmed Ahmed64 نشر 22 ديسمبر 2023 أرسل تقرير نشر 22 ديسمبر 2023 السلام عليكم ورحمة الله وبركاته جمعة مباركة للجميع لدي سؤال أريد طرحة عليكم إخوتي لدي Data Frame وقمت بحفظها على ملف إكسل من خلال الكود التالي Table.to_excel("123456.xlsx", index=False) الأن لدي Data Frame بنفس عدد الأعمدة أريد حفظها على نفس الملف السابق استكمال للجدول السابق فما هو الكود المستخدم لأتمكن من الحفظ على نفس الملف دون فقدان البيانات الأولى 1 اقتباس
0 Mustafa Suleiman نشر 22 ديسمبر 2023 أرسل تقرير نشر 22 ديسمبر 2023 يتوفر الخيار append=True في الدالة to_excel()، وذلك هذا سيؤدي إلى إضافة البيانات الجديدة إلى نهاية الملف الموجود، دون استبدال البيانات الموجودة. كالتالي: Table2.to_excel("123456.xlsx", index=False, append=True) والنتيجة هي إضافة البيانات في Table2 إلى نهاية ملف 123456.xlsx. اقتباس
0 Ahmed Ahmed64 نشر 22 ديسمبر 2023 الكاتب أرسل تقرير نشر 22 ديسمبر 2023 بتاريخ 16 دقائق مضت قال Mustafa Suleiman: يتوفر الخيار append=True في الدالة to_excel()، وذلك هذا سيؤدي إلى إضافة البيانات الجديدة إلى نهاية الملف الموجود، دون استبدال البيانات الموجودة. كالتالي: Table2.to_excel("123456.xlsx", index=False, append=True) والنتيجة هي إضافة البيانات في Table2 إلى نهاية ملف 123456.xlsx. أخي لم تنج معي الفكرة أوضح لك أكثر يوجد هذا الكود كالتالي import pandas as pd def Subject_One(cl1,cl2,cl3,cl4): df = pd.read_excel("AAA.xlsx",header=None) selected_column_1 = df.iloc[8::2, [0,1,2,cl1,cl2,cl3,cl4]] selected_column_1.reset_index(drop=True, inplace=True) selected_column_2 = df.iloc[9::2, [2,cl1,cl2,cl3,cl4]] selected_column_2.reset_index(drop=True, inplace=True) A = pd.DataFrame(selected_column_1) B = pd.DataFrame(selected_column_2) Table=pd.concat([A,B],axis=1) repeated_values1 = [] repeated_values2 = [] for i in range(len(Table)): repeated_values1.append(df.iloc[6,3]) repeated_values2.append(df.iloc[3,4]) Table['الإسم'] = repeated_values1 Table['الرقم'] = repeated_values2 Table.fillna(0, inplace=True) Table["مرحلة الأولى"] = Table.iloc[:, [5,6]].max(axis=1) Table["مرحلة ثانية"] = Table.iloc[:, [10,11]].max(axis=1).apply(lambda x: 50 if x > 50 else x) Table['القيمة'] = 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) Subject_One(3,4,5,6) Subject_One(7,8,9,10) Table.to_excel("20207.xlsx", index=False, append=True) هل أكتب كود الحفظ بهذه الكيفية اقتباس
0 Mustafa Suleiman نشر 22 ديسمبر 2023 أرسل تقرير نشر 22 ديسمبر 2023 لكي تتمكن من الوصول إلى المتغير Table خارج الدالة، عليك إرجاعه من الدالة كالتالي: import pandas as pd def Subject_One(cl1, cl2, cl3, cl4): df = pd.read_excel("AAA.xlsx", header=None) selected_column_1 = df.iloc[8::2, [0, 1, 2, cl1, cl2, cl3, cl4]] selected_column_1.reset_index(drop=True, inplace=True) selected_column_2 = df.iloc[9::2, [2, cl1, cl2, cl3, cl4]] selected_column_2.reset_index(drop=True, inplace=True) A = pd.DataFrame(selected_column_1) B = pd.DataFrame(selected_column_2) Table = pd.concat([A, B], axis=1) repeated_values1 = [df.iloc[6, 3]] * len(Table) repeated_values2 = [df.iloc[3, 4]] * len(Table) Table['الإسم'] = repeated_values1 Table['الرقم'] = repeated_values2 Table.fillna(0, inplace=True) Table["مرحلة الأولى"] = Table.iloc[:, [5, 6]].max(axis=1) Table["مرحلة ثانية"] = Table.iloc[:, [10, 11]].max(axis=1).apply(lambda x: 50 if x > 50 else x) Table['القيمة'] = 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 Table # استدعاء الدالة وحفظ النتائج في متغير result1 = Subject_One(3, 4, 5, 6) result2 = Subject_One(7, 8, 9, 10) # دمج النتائج final_result = pd.concat([result1, result2]) # حفظ النتائج في نفس الملف final_result.to_excel("AAA.xlsx", index=False) أو يمكن كتابة الكود كالتالي أيضًا: def Subject_One(cl1,cl2,cl3,cl4): df = pd.read_excel("AAA.xlsx",header=None) selected_column_1 = df.iloc[8::2, [0,1,2,cl1,cl2,cl3,cl4]] selected_column_1.reset_index(drop=True, inplace=True) selected_column_2 = df.iloc[9::2, [2,cl1,cl2,cl3,cl4]] selected_column_2.reset_index(drop=True, inplace=True) A = pd.DataFrame(selected_column_1) B = pd.DataFrame(selected_column_2) Table=pd.concat([A,B],axis=1) repeated_values1 = [] repeated_values2 = [] for i in range(len(Table)): repeated_values1.append(df.iloc[6,3]) repeated_values2.append(df.iloc[3,4]) Table['الإسم'] = repeated_values1 Table['الرقم'] = repeated_values2 Table.fillna(0, inplace=True) Table["مرحلة الأولى"] = Table.iloc[:, [5,6]].max(axis=1) Table["مرحلة ثانية"] = Table.iloc[:, [10,11]].max(axis=1).apply(lambda x: 50 if x > 50 else x) Table['القيمة'] = 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) # Write the data to the file with pd.ExcelWriter("AAA.xlsx", mode='a') as writer: Table.to_excel(writer, sheet_name='Sheet1', index=False) Subject_One(3,4,5,6) Subject_One(7,8,9,10) اقتباس
0 Ahmed Ahmed64 نشر 22 ديسمبر 2023 الكاتب أرسل تقرير نشر 22 ديسمبر 2023 (معدل) بتاريخ 55 دقائق مضت قال Mustafa Suleiman: لكي تتمكن من الوصول إلى المتغير Table خارج الدالة، عليك إرجاعه من الدالة كالتالي: import pandas as pd def Subject_One(cl1, cl2, cl3, cl4): df = pd.read_excel("AAA.xlsx", header=None) selected_column_1 = df.iloc[8::2, [0, 1, 2, cl1, cl2, cl3, cl4]] selected_column_1.reset_index(drop=True, inplace=True) selected_column_2 = df.iloc[9::2, [2, cl1, cl2, cl3, cl4]] selected_column_2.reset_index(drop=True, inplace=True) A = pd.DataFrame(selected_column_1) B = pd.DataFrame(selected_column_2) Table = pd.concat([A, B], axis=1) repeated_values1 = [df.iloc[6, 3]] * len(Table) repeated_values2 = [df.iloc[3, 4]] * len(Table) Table['الإسم'] = repeated_values1 Table['الرقم'] = repeated_values2 Table.fillna(0, inplace=True) Table["مرحلة الأولى"] = Table.iloc[:, [5, 6]].max(axis=1) Table["مرحلة ثانية"] = Table.iloc[:, [10, 11]].max(axis=1).apply(lambda x: 50 if x > 50 else x) Table['القيمة'] = 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 Table # استدعاء الدالة وحفظ النتائج في متغير result1 = Subject_One(3, 4, 5, 6) result2 = Subject_One(7, 8, 9, 10) # دمج النتائج final_result = pd.concat([result1, result2]) # حفظ النتائج في نفس الملف final_result.to_excel("AAA.xlsx", index=False) أو يمكن كتابة الكود كالتالي أيضًا: def Subject_One(cl1,cl2,cl3,cl4): df = pd.read_excel("AAA.xlsx",header=None) selected_column_1 = df.iloc[8::2, [0,1,2,cl1,cl2,cl3,cl4]] selected_column_1.reset_index(drop=True, inplace=True) selected_column_2 = df.iloc[9::2, [2,cl1,cl2,cl3,cl4]] selected_column_2.reset_index(drop=True, inplace=True) A = pd.DataFrame(selected_column_1) B = pd.DataFrame(selected_column_2) Table=pd.concat([A,B],axis=1) repeated_values1 = [] repeated_values2 = [] for i in range(len(Table)): repeated_values1.append(df.iloc[6,3]) repeated_values2.append(df.iloc[3,4]) Table['الإسم'] = repeated_values1 Table['الرقم'] = repeated_values2 Table.fillna(0, inplace=True) Table["مرحلة الأولى"] = Table.iloc[:, [5,6]].max(axis=1) Table["مرحلة ثانية"] = Table.iloc[:, [10,11]].max(axis=1).apply(lambda x: 50 if x > 50 else x) Table['القيمة'] = 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) # Write the data to the file with pd.ExcelWriter("AAA.xlsx", mode='a') as writer: Table.to_excel(writer, sheet_name='Sheet1', index=False) Subject_One(3,4,5,6) Subject_One(7,8,9,10) أخي الكود الثاني يظهر لي الخطأ ValueError: Sheet 'Sheet1' already exists and if_sheet_exists is set to 'error'. كيف نعالج هذه المشكلة أما الكود بالطريقة الأولى التي أخبرتني بها ظهرت لي مشكلة obj_labels.get_indexer(new_labels) كيف نعالج هذه المشكلة تم التعديل في 22 ديسمبر 2023 بواسطة Ahmed Ahmed64 اقتباس
0 Mustafa Suleiman نشر 22 ديسمبر 2023 أرسل تقرير نشر 22 ديسمبر 2023 حاول استبدال محتويات ورقة العمل الحالية من خلال: with pd.ExcelWriter("AAA.xlsx", mode='a') as writer: Table.to_excel(writer, sheet_name='Sheet1', index=False, if_sheet_exists='replace') أو الإَضافة إلى نهاية ورقة العمل الحالية من خلال: with pd.ExcelWriter("AAA.xlsx", mode='a') as writer: Table.to_excel(writer, sheet_name='Sheet1', startrow=writer.sheets['Sheet1'].max_row, index=False) اقتباس
0 Ahmed Ahmed64 نشر 22 ديسمبر 2023 الكاتب أرسل تقرير نشر 22 ديسمبر 2023 المشكلة قائمة هذا الخطأ عند محاولة إسخدام الكود الأخير المستلم منك أخي لأعلم ماسبب المشكله in Subject_One Table.to_excel(writer, sheet_name='Sheet1', startrow=writer.sheets['Sheet1'].max_row, index=False) ~~~~~~~~~~~~~^^^^^^^^^^ KeyError: 'Sheet1' 1 اقتباس
0 Mustafa Suleiman نشر 22 ديسمبر 2023 أرسل تقرير نشر 22 ديسمبر 2023 أرفق الملفات التي تعمل عليها لإختبار الكود عليها. اقتباس
0 Ahmed Ahmed64 نشر 22 ديسمبر 2023 الكاتب أرسل تقرير نشر 22 ديسمبر 2023 بتاريخ 15 دقائق مضت قال Mustafa Suleiman: أرفق الملفات التي تعمل عليها لإختبار الكود عليها. تفضل الملف A1.rar اقتباس
السؤال
Ahmed Ahmed64
السلام عليكم ورحمة الله وبركاته
جمعة مباركة للجميع
لدي سؤال أريد طرحة عليكم
إخوتي لدي Data Frame وقمت بحفظها على ملف إكسل من خلال الكود التالي
الأن لدي Data Frame بنفس عدد الأعمدة
أريد حفظها على نفس الملف السابق استكمال للجدول السابق فما هو الكود المستخدم لأتمكن من الحفظ على نفس الملف دون فقدان البيانات الأولى
8 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.