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

دمج محتويات عمودين ضمن عمود واحد في باندا pandas

Mohamed Elnemr

السؤال

لدي بيانات ذات حجم 20x4000 على شكل Dataframe. اثنان من الأعمدة في تلك ال dataframe هما year و month وأريد عمل متغير جديد يدعي period يقوم بدمج العمود year بجانب العمود month كالتالي:

year  month  period
2021  june   2021june

كيف يمكنني عمل هذا؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك القيام بذلك من خلال الدالة assign كالتالي:

import pandas as pd
df = pd.DataFrame({'Year': ['2020', '2021'], 'month': ['june', 'july']})
df
"""
    Year 	month
0 	2020 	june
1 	2021 	july
"""
df = df.assign(period = df.Year.astype(str) + '-' + \
      df.month.astype(str))
df
"""
    Year 	month 	period
0 	2020 	june 	2020-june
1 	2021 	july 	2021-july
"""

أو باستخدام الدالة apply وتطبيق lambda على كل سطر من البيانات:

import pandas as pd
df = pd.DataFrame({'Year': ['2020', '2021'], 'month': ['june', 'july']})
df
"""
    Year 	month
0 	2020 	june
1 	2021 	july
"""
df['period'] = df[df.columns[0:]].apply(
    lambda x: '-'.join(x.dropna().astype(str)),
    axis=1
)
df
"""
    Year 	month 	period
0 	2020 	june 	2020-june
1 	2021 	july 	2021-july
"""

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

تستطيع استخدام lambda لفعل ذلك كالتالي

combine_lambda = lambda x: '{}{}'.format(x.Year, x.quarter)

ثم تستطيع استخدم الناتج في إنشاء العمود الجديد كالتالي

df['period'] = df.apply(combine_lambda, axis = 1)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

لو أن كلا العمودين من النوع string يمكنك دمجهما مباشرة بالكود التالي:

df["period"] = df["Year"] + df["month"]

اما اذا كان احد الأعمدة أو كلاهما ليس من صيغة string يجب تحويله اولا ثم دمجهمها:

df["period"] = df["Year"].astype(str) + df["month"]

أو يمكنك استخدام الكود التالي ايضا كطريقة أخرى:

df = pd.DataFrame({'Year': ['2020', '2021'], 'month': ['june', 'july']})
df['period'] = df[['Year', 'month']].apply(lambda x: ''.join(x), axis=1)

ويكون الخرج على الشكل التالي:

   Year  month  period
0  2020  june   2021june
1  2021  july   2021july

اما اذا أردت دمج العديد من الأعمدة سويا يمكنك استخدام الدالة agg لعمل هذا كالتالي:

df['period'] = df[['Year', 'month', ...]].agg('-'.join, axis=1)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...