Mohamed Elnemr نشر 9 سبتمبر 2021 أرسل تقرير نشر 9 سبتمبر 2021 لدي العديد من البيانات على شكل dataframe، واريد أن أجد طريقة أقوم بعمل إضافة لهم append مرة واحدة عوضاً عن عمل append لكل واحدة مفردها: df.append(df) لنفرض أن لدي dataframes أسماؤهم d1,d2,d3,d4,d5 جربت الطريقة التالية لاضافتهم مرة واحدة لكن لم تفلح: df = rbind(d1,d2,d3,d4,d5) كيف يمكنني فعل هذا؟ 3 اقتباس
0 Ahmed Sharshar نشر 9 سبتمبر 2021 أرسل تقرير نشر 9 سبتمبر 2021 يمكن عمل concat كالتالي: pd.concat([d1, d2, d3, d4, d5]) أو يمكنك كذلك استخدام ignore_index كالتالي: pd.concat([d1, d2, d3, d4, d5], ignore_index=True) أو يمكنك عمل append لكل ال dataframes مرة واحدة كالتالي: import numpy as np import pandas as pd dates = np.asarray(pd.date_range('1/1/2021', periods=8)) df1 = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['D1', 'D2', 'D3', 'D4']) df2 = df1.copy() df3 = df1.copy() df = df1.append([df2, df3]) اقتباس
0 Ali Haidar Ahmad نشر 9 سبتمبر 2021 أرسل تقرير نشر 9 سبتمبر 2021 لتكن لدينا البيانات التالية: import pandas as pd df1 = pd.DataFrame({'id': ['1', '2'], 'Name': ['ali', 'Eyad']}) df1 """ id Name 0 1 ali 1 2 Eyad """ df2 = pd.DataFrame({'id': ['3', '4'], 'Name': ['asdc', 'gbf']}) df2 """ id Name 0 3 asdc 1 4 gbf """ pd.concat: dataframes = [df1, df2] pd.concat(dataframes) """ id Name 0 1 ali 1 2 Eyad 0 3 asdc 1 4 gbf """ # لاحظ أن الفهرس أصبح غير مرتب وبالتالي لضبطه نقوم بالتالي pd.concat(dataframes, ignore_index=True) """ id Name 0 1 ali 1 2 Eyad 2 3 asdc 3 4 gbf """ df.append: df1.append([df2]) """ id Name 0 1 ali 1 2 Eyad 0 3 asdc 1 4 gbf """ # كذلك لإصلاح الفهرس نضيف الوسيط التالي df1.append([df2],ignore_index=True) الحلول الأسرع مع البيانات الكبيرة تكون من خلال الاتجاه إلى نمباي وهناك العديد من الطرق للقيام بذلك وسأذكر اثنين منها (هما الأفضل لأداء المهمة): # vstack import numpy as np pd.DataFrame(np.vstack((df1.to_numpy(),df2.to_numpy())),columns=["id","name"]) """ id name 0 1 ali 1 2 Eyad 2 3 asdc 3 4 gbf """ # column_stack pd.DataFrame(np.column_stack((df1.to_numpy().T,df2.to_numpy().T)).T,columns=["id","name"]) """ id name 0 1 ali 1 2 Eyad 2 3 asdc 3 4 gbf """ وللمقارنة بين المناهج السابقة: %timeit pd.DataFrame(np.vstack((df1.to_numpy(),df2.to_numpy())),columns=["id","name"]) # 1000 loops, best of 5: 398 µs per loop %timeit df1.append([df2]) # 1000 loops, best of 5: 473 µs per loop %timeit pd.concat([df1, df2]) # 1000 loops, best of 5: 434 µs per loop %timeit pd.DataFrame(np.column_stack((df1.to_numpy().T,df2.to_numpy().T)).T,columns=["id","name"]) # 1000 loops, best of 5: 407 µs per loop vstack هو الأفضل. ويظهر الفرق أكبر عندما نتعامل مع عدد كبير من الداتافريم أو الأحجام الكبيرة. اقتباس
0 محمد أبو عواد نشر 10 سبتمبر 2021 أرسل تقرير نشر 10 سبتمبر 2021 إذا كانت الأعمدة في dataframes مختلف ، يمكنك إضافتها للإلحاق #list dataframe الذي تريد إلحاقه frame = [d1,d2,d3,d4,d5] #new dataframe لتخزين إلحاق النتيجة myDataFrame = pd.DataFrame() for df in frame: myDataFrame = myDataFrame.append(df) تأكد من أن إلحاق البيانات تم بنجاح عن طريق التحقق من طول DataFrame باستخدام: len(myDataFrame) إذا كانت جميع الأعمدة في dataframes نفسها ، فلن يكون كل dataframes مصدر قلق طالما أن الأعمدة في dataframes نفسه ، يمكنك استخدام pd.concat (dataframe) كما هو مذكور بواسطة المدرب أحمد. اقتباس
السؤال
Mohamed Elnemr
لدي العديد من البيانات على شكل dataframe، واريد أن أجد طريقة أقوم بعمل إضافة لهم append مرة واحدة عوضاً عن عمل append لكل واحدة مفردها:
لنفرض أن لدي dataframes أسماؤهم d1,d2,d3,d4,d5 جربت الطريقة التالية لاضافتهم مرة واحدة لكن لم تفلح:
df = rbind(d1,d2,d3,d4,d5)
كيف يمكنني فعل هذا؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.