إضافة عمود إلى GroupBy DataFrame باستخدام Pandas Transform
عند العمل مع عمليات groupby في الباندا، غالبًا ما يكون من المفيد إضافة عمود جديد إلى إطار البيانات الناتج. إحدى الطرق لتحقيق ذلك هي استخدام الدالة .map()، كما هو موضح في المثال. ومع ذلك، هناك طريقة بديلة وأكثر وضوحًا وهي استخدام الدالة .transform().
.transform() تسمح لنا بتطبيق دالة على كل مجموعة في إطار البيانات وإرجاع سلسلة مع النتائج. ستحتوي السلسلة التي تم إرجاعها على فهرس محاذٍ لإطار البيانات الأصلي.
للتوضيح، لنبدأ بإطار البيانات المقدم:
df = pd.DataFrame({'c': [1, 1, 1, 2, 2, 2, 2], 'type': ['m', 'n', 'o', 'm', 'm', 'n', 'n']})
هدفنا هو حساب قيم النوع لكل c وإضافة عمود بحجم c.
g = df.groupby('c')['type'].value_counts().reset_index(name='t')
يحسب هذا الكود القيم لكل مجموعة وينشئ عمودًا جديدًا باسم t.
لإضافة عمود الحجم باستخدام .transform()، يمكننا قم بما يلي:
g['size'] = df.groupby('c')['type'].transform('size')
.transform('size') يطبق دالة الحجم على كل مجموعة، مما يُرجع حجم كل مجموعة. تتم محاذاة السلسلة الناتجة مع فهرس إطار البيانات الأصلي، مما يسمح لنا بإضافته كعمود جديد إلى g.
سيكون الناتج عبارة عن إطار بيانات مع عمود إضافي يسمى الحجم:
c type t size 0 1 m 1 3 1 1 n 1 3 2 1 o 1 3 3 2 m 2 4 4 2 n 2 4
يوفر استخدام .transform() طريقة أكثر إيجازًا ومباشرة لإضافة عمود مرة أخرى إلى إطار البيانات الأصلي من تجميع حسب المجموعة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3