Mohamed Elnemr نشر 25 أغسطس 2021 أرسل تقرير نشر 25 أغسطس 2021 (معدل) لدي بيانات على الشكل التالي: df = pd.DataFrame({"Fruits": [["Apple", "Oragne"] for i in range(7)]}) Fruits 0 [Apple, Orange] 1 [Apple, Orange] 2 [Apple, Orange] 3 [Apple, Orange] 4 [Apple, Orange] 5 [Apple, Orange] 6 [Apple, Orange] وأود أن أقوم بفصل العمود الثاني الذي هو عبارة عن صف الى عمودين مختلفين كالتالي: Fruit1 Fruit2 0 Apple Orange 1 Apple Orange 2 Apple Orange 3 Apple Orange 4 Apple Orange 5 Apple Orange 6 Apple Orange كيف أستطيع أن أقوم بهذا؟ تم التعديل في 25 أغسطس 2021 بواسطة Mohamed Elnemr 2 اقتباس
0 Ali Haidar Ahmad نشر 25 أغسطس 2021 أرسل تقرير نشر 25 أغسطس 2021 تابع معي.. أول طريقة هي استخدام الدالة apply: import pandas as pd # هنا فقط تعريف الداتا df = pd.DataFrame({"Fruits": [["Apple", "Oragne"] for i in range(7)]}) print("Given Dataframe is :\n",df) # الآن سنقوم بتطبيق التابع لمدا على كل سطر من البيانات df=df.Fruits.apply(lambda x: pd.Series(" ".join(x).split())) print("\nSplitting Fruits column into two different columns :") # تغيير أسماء الأعمدة بالشمل الذي نريده df.columns=["F1","F@"] print(df) """ Given Dataframe is : Fruits 0 [Apple, Oragne] 1 [Apple, Oragne] 2 [Apple, Oragne] 3 [Apple, Oragne] 4 [Apple, Oragne] 5 [Apple, Oragne] 6 [Apple, Oragne] Splitting Fruits column into two different columns : F1 F@ 0 Apple Oragne 1 Apple Oragne 2 Apple Oragne 3 Apple Oragne 4 Apple Oragne 5 Apple Oragne 6 Apple Oragne """ الفكرة الرئيسية في الكود السابق هو السطر: df=df.Fruits.apply(lambda x: pd.Series(" ".join(x).split())) كما نعلم فإن Apply يقوم بالمرور على أسطر البيانات سطر سطر ويطبق عليه تابع معين، ونحن استخدمنا التابع lambda الذي يمكننا من كتابة تابع مباشرةً، حيث يقوم هذا التابع بتحويل كل قائمة من الشكل [Apple, Oragne] إلى string من الشكل "Apple Oragne" ثم نقوم بتطبيق دالة split عليها (تقوم هذه الدالة بتحويل السلسلة النصية إللا قائمة بعد أن تقوم بفصل كلمات السلسلة على أساس محرف معين-افتراضياً يتم الفصل على أساس الفراغات-) ثم يتم تحويل القائمة الناتجة إلى pandas.sreies وهذه هي كل الفكرة. للوضوح أكثر: # هذا مايحدث في كل سطر " ".join(["Apple", "Oragne"]) # "Apple Oragne" "Apple Oragne".split() # ['Apple', 'Oragne'] pd.Series(['Apple', 'Oragne']) """ 0 Apple 1 Oragne dtype: object """ الآن بشكل مشابه قليلاً للطريقة السابقة لكنها تمنحك تحكم أقل في حال كانت المشاكلة أكثر تعقيداً وهي tolist لكنها هنا أسهل: df=pd.DataFrame(df.Fruits.to_list(),columns = ['F1','F2']) print("\nSplitting Fruits column into two different columns :") print(df) """ Splitting Fruits column into two different columns : F1 F2 0 Apple Oragne 1 Apple Oragne 2 Apple Oragne 3 Apple Oragne 4 Apple Oragne 5 Apple Oragne 6 Apple Oragne """ في الحالة العامة أي عندما يكون لدينا نص مركب ونريد وضع كل جزء في عمود كما في المثال التالي، يكفينا استخدام الدالة split مع تحديد المحرف الذي نريد الفصل على أساسه: import pandas as pd df = pd.DataFrame({'Name': ['Ali Ahmad', 'Eyad Ismael']}) print("Given Dataframe is :\n",df) print("\nSplitting 'Name' column into two different columns :\n") df=df.Name.str.split(expand=True) df.columns=["First","Last"] print(df) """ Given Dataframe is : Name 0 Ali Ahmad 1 Eyad Ismael Splitting 'Name' column into two different columns : First Last 0 Ali Ahmad 1 Eyad Ismael """ اقتباس
0 Ahmed Sharshar نشر 25 أغسطس 2021 أرسل تقرير نشر 25 أغسطس 2021 يمكنك ببساطة أستخدام الدالة to_list والتي ستقوم بعمل ما تريد تماما، حيث انها تفصل الصف الى عناصر مختلفة ومنها يمكنك جعلك تلك العناصر في شكل أعمدة. أنظر الكود التالي للتوضيح: df2[['Fruit1','Fruit2']] = pd.DataFrame(df2.Fruits.tolist(), index= df2.index) print (df2) Fruit1 Fruit2 0 Apple Orange 1 Apple Orange 2 Apple Orange 3 Apple Orange 4 Apple Orange 5 Apple Orange 6 Apple Orange كذلك إذا أردت فصل مجوعة من العناصر لكنها ليست في شكل list، كأن تكون العلامة "," هي الفاصل بين العناصر مثلا، يمكنك استخدام الكود التالي: pd.DataFrame(df["Fruits"].str.split('<delim>', expand=True).values, columns=['Fruit1', 'Fruit2']) 1 اقتباس
السؤال
Mohamed Elnemr
لدي بيانات على الشكل التالي:
وأود أن أقوم بفصل العمود الثاني الذي هو عبارة عن صف الى عمودين مختلفين كالتالي:
كيف أستطيع أن أقوم بهذا؟
تم التعديل في بواسطة Mohamed Elnemr2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.