اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته

جمعة مباركة للجميع

لدي سؤال أريد طرحة عليكم

إخوتي لدي  Data Frame وقمت بحفظها على ملف إكسل من خلال الكود التالي

Table.to_excel("123456.xlsx", index=False)

الأن لدي Data Frame بنفس عدد الأعمدة 

أريد حفظها على نفس الملف السابق استكمال للجدول السابق فما هو الكود المستخدم لأتمكن من الحفظ على نفس الملف دون فقدان البيانات الأولى

Recommended Posts

  • 0
نشر

يتوفر الخيار append=True في الدالة to_excel()، وذلك هذا سيؤدي إلى إضافة البيانات الجديدة إلى نهاية الملف الموجود، دون استبدال البيانات الموجودة.

كالتالي:

Table2.to_excel("123456.xlsx", index=False, append=True)

والنتيجة هي إضافة البيانات في Table2 إلى نهاية ملف 123456.xlsx.

  • 0
نشر
بتاريخ 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
نشر

لكي تتمكن من الوصول إلى المتغير 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
نشر (معدل)
بتاريخ 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)

كيف نعالج هذه المشكلة

تم التعديل في بواسطة Ahmed Ahmed64
  • 0
نشر

حاول استبدال محتويات ورقة العمل الحالية من خلال:

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
نشر

المشكلة قائمة هذا الخطأ عند محاولة إسخدام  الكود الأخير المستلم منك أخي لأعلم ماسبب المشكله

in Subject_One
    Table.to_excel(writer, sheet_name='Sheet1', startrow=writer.sheets['Sheet1'].max_row, index=False)
                                                         ~~~~~~~~~~~~~^^^^^^^^^^
KeyError: 'Sheet1'

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...