Ahmed Ahmed64 نشر 22 ديسمبر 2023 أرسل تقرير مشاركة نشر 22 ديسمبر 2023 السلام عليكم ورحمة الله وبركاته جمعة مباركة للجميع لدي سؤال أريد طرحة عليكم إخوتي لدي Data Frame وقمت بحفظها على ملف إكسل من خلال الكود التالي Table.to_excel("123456.xlsx", index=False) الأن لدي Data Frame بنفس عدد الأعمدة أريد حفظها على نفس الملف السابق استكمال للجدول السابق فما هو الكود المستخدم لأتمكن من الحفظ على نفس الملف دون فقدان البيانات الأولى 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Mustafa Suleiman نشر 22 ديسمبر 2023 أرسل تقرير مشاركة نشر 22 ديسمبر 2023 يتوفر الخيار append=True في الدالة to_excel()، وذلك هذا سيؤدي إلى إضافة البيانات الجديدة إلى نهاية الملف الموجود، دون استبدال البيانات الموجودة. كالتالي: Table2.to_excel("123456.xlsx", index=False, append=True) والنتيجة هي إضافة البيانات في Table2 إلى نهاية ملف 123456.xlsx. اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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) هل أكتب كود الحفظ بهذه الكيفية اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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) اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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) اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Mustafa Suleiman نشر 22 ديسمبر 2023 أرسل تقرير مشاركة نشر 22 ديسمبر 2023 أرفق الملفات التي تعمل عليها لإختبار الكود عليها. اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ahmed Ahmed64 نشر 22 ديسمبر 2023 الكاتب أرسل تقرير مشاركة نشر 22 ديسمبر 2023 بتاريخ 15 دقائق مضت قال Mustafa Suleiman: أرفق الملفات التي تعمل عليها لإختبار الكود عليها. تفضل الملف A1.rar اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Ahmed Ahmed64
السلام عليكم ورحمة الله وبركاته
جمعة مباركة للجميع
لدي سؤال أريد طرحة عليكم
إخوتي لدي Data Frame وقمت بحفظها على ملف إكسل من خلال الكود التالي
الأن لدي Data Frame بنفس عدد الأعمدة
أريد حفظها على نفس الملف السابق استكمال للجدول السابق فما هو الكود المستخدم لأتمكن من الحفظ على نفس الملف دون فقدان البيانات الأولى
رابط هذا التعليق
شارك على الشبكات الإجتماعية
8 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.