Mohamed Elnemr نشر 1 سبتمبر 2021 أرسل تقرير نشر 1 سبتمبر 2021 لدي البيانات التالية في pandas على هيئة dataframe كالتالي: col1 animal A Cat A Dog B Bird B Bat وأود أن أدمج العناصر التي لها نفس القيمة في العمود col1 بحيث تصبح على الشكل التالي: A Cat-Dog B Bird-Bat حاولت استخدام الكود التالي: group = df.groupby(['col1'])['animal'].sum().apply(lambda x: '-'.join(x)) لكن الشكل الخارج يكون مختلفاً عما أريد: A C-a-t-T-i-g-e-r B B-a-l-l-B-a-t كيف يمكنني أن اظهرها بالشكل السليم؟ 1 اقتباس
0 Ahmed Sharshar نشر 1 سبتمبر 2021 أرسل تقرير نشر 1 سبتمبر 2021 يمكنك استخدام groupby مع الدالة agg لدمج عناصر عمودين سوياً بالشكل الذي تريد كالتالي: In [48]: df.groupby('col1')['animal'].agg('-'.join) Out[48]: col1 A Cat-Dog B Bird-Bat Name: val, dtype: object أو يمكنك انشاء dataframe جديدة وضم الأعمدة المدمجة لها بالكود التالي: df1 = df.groupby('col1')['animal'].agg('-'.join).reset_index(name='new') اقتباس
0 Ali Haidar Ahmad نشر 1 سبتمبر 2021 أرسل تقرير نشر 1 سبتمبر 2021 أيضاً من خلال استخدام الدالة apply كالتالي، وهي الطريقة الأبسط: import pandas as pd df = pd.DataFrame({'Year': ['1', '1','2','2'], 'month': ['june', 'july','june','july']}) df """ Year month 0 1 june 1 1 july 2 2 june 3 2 july """ df.groupby(["Year"])["month"].apply('-'.join) """ Year 1 june-july 2 june-july Name: month, dtype: object """ أو عن طريق استخدام lambda مع الدالة agg كالتالي: df.groupby('Year').agg(lambda x : '-'.join(set(x))) """ month Year 1 july-june 2 july-june """ 1 اقتباس
السؤال
Mohamed Elnemr
لدي البيانات التالية في pandas على هيئة dataframe كالتالي:
وأود أن أدمج العناصر التي لها نفس القيمة في العمود col1 بحيث تصبح على الشكل التالي:
A Cat-Dog B Bird-Bat
حاولت استخدام الكود التالي:
group = df.groupby(['col1'])['animal'].sum().apply(lambda x: '-'.join(x))
لكن الشكل الخارج يكون مختلفاً عما أريد:
كيف يمكنني أن اظهرها بالشكل السليم؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.